Iis 7 IIS7 web.config文件不同时支持重定向和404
我已经编写了一个外部重定向文件,供站点使用。重定向工作得很好,但是当我添加404规则时,重定向中断了。此时,404起作用,但重定向不起作用。我还尝试将重定向规则保存在web.config文件中(而不是作为单独的文件),但这也不起作用 有人能想出我如何让我的重定向和404规则协同工作吗 下面是web.config文件中重定向的代码:Iis 7 IIS7 web.config文件不同时支持重定向和404,iis-7,url-rewriting,Iis 7,Url Rewriting,我已经编写了一个外部重定向文件,供站点使用。重定向工作得很好,但是当我添加404规则时,重定向中断了。此时,404起作用,但重定向不起作用。我还尝试将重定向规则保存在web.config文件中(而不是作为单独的文件),但这也不起作用 有人能想出我如何让我的重定向和404规则协同工作吗 下面是web.config文件中重定向的代码: <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.w
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps configSource="rewritemaps.config" />
<rules>
<rule name="Redirect rule1 for Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
上面引用的外部文件如下所示:
<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/old_page.html" value="/new_page.html" />
</rewriteMap>
</rewriteMaps>
在这一点上,一切都很好。然而,只要我添加以下内容,404就可以很好地工作,但是重定向不起作用
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/page-not-found.html" responseMode="ExecuteURL" />
</httpErrors>
不起作用的总代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps configSource="rewritemaps.config" />
<rules>
<rule name="Redirect rule1 for Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/page-not-found.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
您的配置很好--这里没有问题
尝试回收应用程序池。。或者重新启动IIS服务。您的配置很好--这里没有问题
尝试回收应用程序池。。或者重新启动IIS服务。在这里工作完全正常。尝试回收应用程序池。。或者重新启动IIS服务!成功了。请添加您的评论作为答案,以便我可以接受。非常感谢!在这里工作绝对不错。尝试回收应用程序池。。或者重新启动IIS服务!成功了。请添加您的评论作为答案,以便我可以接受。非常感谢!如果这不起作用:请确保您实际使用的是IIS!对我有效的方法是转到项目的属性,选择“Web”选项卡,将“使用Visual Studio Development Server”更改为“使用本地IIS Web服务器”,并接受默认的子设置(在我的情况下是)“使用IIS Express”和项目Url”。如果不起作用,请确保您实际使用的是IIS!对我有效的方法是转到项目的属性,选择“Web”选项卡,并将“使用Visual Studio Development Server”更改为“使用本地IIS Web服务器”,并接受默认的子设置(在我的情况下是)“使用IIS Express”和项目Url”。