我已经编写了一个外部重定向文件,可以在网站中使用。重定向工作完美,但是当我添加404规则时,重定向会中断。此时,404工作,但重定向不起作用。我也尝试将重定向规则保留在web.config文件中(而不是作为单独的文件),但这也不起作用。
任何人都可以知道如何让我的重定向和404规则协同工作吗?
以下是web.config文件中重定向的代码:
<?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>
答案 0 :(得分:0)
您的配置很好 - 这里没有问题。
尝试回收应用池..或重新启动IIS服务。