ASP.NET IIS7 的永久 301 重定向
Posted
技术标签:
【中文标题】ASP.NET IIS7 的永久 301 重定向【英文标题】:Permanent 301 redirect for ASP.NET IIS7 【发布时间】:2012-02-24 11:08:06 【问题描述】:我试图弄清楚如何为放置在 Microsoft-IIS/7.0 类型服务器上的网站设置 301 永久重定向。 因此,假设我有域 www.A.com,我想将其重定向到 www.B.com 我可以在我的 web.config 文件中使用类似以下内容:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to WWW" stopProcessing="true">
<match url="A.com" />
<conditions>
<add input="HTTP_HOST" pattern="^www.B.com$" />
</conditions>
<action type="Redirect" url="http://www.B.com/R:0"
redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
将web.config放到根目录时,服务器响应:
403 - 禁止:访问被拒绝。 您无权使用您提供的凭据查看此目录或页面。
有什么建议为什么会出现这个 403 错误?
提前致谢。
【问题讨论】:
尝试打开错误跟踪以查看错误来自何处。另外,请确保您已安装 URL 重写模块。 【参考方案1】:这应该可以工作并且更简单。您不需要 URL 重写,只需 HTTP 重定向。
关于 403,IIS 应用程序池是否对您站点根目录下的文件夹具有读取权限?
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpRedirect enabled="true" destination="www.B.com" httpResponseStatus="Permanent" />
</system.webServer>
</configuration>
【讨论】:
感谢您的回答。那么问题是我无法访问控制面板(只能通过 ftp 访问该站点)。另外我对 II7 和 ASP.NET 的工作原理只有基本的了解,所以我不知道如何确定 IIS 应用程序池是否具有对根文件夹的读取权限。 嗯,好吧,如果该站点是为您设置的,您可能可以假设那里有适当的权限。您可以通过注释掉您现有的 web.config URL 重写并在根文件夹中放置一个基本的“hello world”default.aspx 来进行测试,并检查您是否可以成功请求它。如果一切正常,我仍然建议尝试上面的配置,它应该适合你。 @Kiwi1 好的,根据您的问题,HTTP 重定向似乎应该产生您想要的确切结果。那么,您能描述一下它是如何在编辑中不起作用的吗? 没有运气尝试使用基本的“hello world”default.aspx。服务器仍然给我 403 错误。我目前正在通过使用 location.replace 来使用 javascript 重定向,但我想这只是我将其用作有关搜索引擎索引等的临时方法?顺便说一下,web.config 中使用的 HTTP 重定向给了我同样的 403 错误。 @wilsonlego 对于 403 错误,没有。听起来 Kiwi1 有一个基本的配置问题,例如文件系统权限,但正如您所见,我们没有在这里讨论。如果您遇到类似的问题,我建议您发布一个新问题。【参考方案2】:如果您在普通(默认)web.config 和完全普通的 Default.aspx 中遇到 403 错误,则 IIS 存在配置问题。应用程序池很可能没有网站基础文件夹的权限。听起来您处于托管状态,因此请联系系统管理员。
【讨论】:
以上是关于ASP.NET IIS7 的永久 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章