我寫了一個外部重定向文件在網站中使用。重定向工作完美,但是當我添加404規則時,重定向會中斷。在那時,404有效,但重定向沒有。我也試過在web.config文件中保留重定向規則(而不是單獨的文件),但這也不起作用。IIS7 web.config文件不支持重定向和404在同一時間
任何人都可以弄清楚如何讓我的重定向和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>
這裏工作絕對不錯。嘗試回收應用程序池..或重新啓動IIS服務 – LazyOne
槍的兒子!這工作。請添加您的評論作爲答案,以便我可以接受它。非常感謝! –