gpt4 book ai didi

asp.net - 共享主机上忽略 web.config 重定向

转载 作者:行者123 更新时间:2023-12-02 17:05:38 26 4
gpt4 key购买 nike

我有一个网页托管在共享 Microsoft-IIS/8.5 服务器上。我没有该服务器的管理员权限,也无权访问其配置文件,因此我无法真正确保 URL rewrite模块或 HTTP redirect元素已正确安装/设置。

我想从名为 old_folder 的文件夹建立重定向到名为 new_folder 的文件夹(对我来说都是根,即 http://sharedhosting.com/myusername/ )。我在根文件夹中放置了以下 web.config文件:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="rewrite">
<section name="rules" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>

<system.webServer>
<rewrite>
<rules>
<rule name="attempt" stopProcessing="true" enabled="true">
<match url="^old_folder/$" />
<action type="Redirect" url="new_folder/" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

但我能得到的只是 403 - Forbidden: Access is denied. (如果我留空 old_folder )或 404 - File or directory not found. (如果我删除它)。

我尝试使用HTTP Redirect ,通过放入 old_folder一个Web.config文件包含

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpRedirect enabled="true" destination="http://sharedhosting.com/myusername/new_folder/" />
</system.webServer>
</configuration>

但这也不起作用。

我知道我的Web.config文件被读取(如果其中有错误,我会收到 500 个错误)。我怀疑已安装 URL 重写,因为例如 http://sharedhosting.com/myusername/folder被重写为http://sharedhosting.com/myusername/folder/ (即带有斜杠)如果 folder文件夹存在。

我的规则正确吗?我的主机是否阻止我重定向?如果是,我怎么知道?

我添加了<clear /> <rules>之后标记放弃所有其他重写规则,但它仍然没有重定向任何内容。

我错过了什么?

赏金到期前的最后编辑为了澄清,我的问题是“如何理解为什么服务器没有正确解释/忽略我的指令?”。

We came to the conclusion这可能是我的服务器设置得很奇怪,我正是试图“恢复工程”它并检测是什么使服务器忽略重定向/重写规则。

最佳答案

您可以通过使用 HttpHandlers 实现相同的效果,因此我假设您可以直接访问 Old_folderNew_folder在浏览器中。

这是一个示例 httphandlers ,您可以这样做:

youname.Handlers
{
public class RedirectHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.Status = "301 Moved Permanently";
string url = context.Request.Url.ToString().Replace("old_folder", "new_folder");
context.Response.AddHeader("Location", url);
}
public bool IsReusable
{
get { return false; }
}
}
}

web_config 中添加处理程序,如下所示:

system.web>
<httpHandlers>
<add verb="*" path="xxx/*.*" type="yourname.Handlers.RedirectHandler"/>
</httpHandlers>
</system.web>

使用 IIS Url_rewriting :

   <?xml version="1.0"?>
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps>
<rewriteMap name="yourRedirects">
<add key="/yourroot/old_folder/" value="/otherdir/new_folder" />
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="RedirectRule" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{yourRedirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="http://www.yourdomain.com{C:1}" appendQueryString="False" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

关于asp.net - 共享主机上忽略 web.config 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com