2011-09-01 32 views
2

我寫了一個外部重定向文件在網站中使用。重定向工作完美,但是當我添加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> 
+0

這裏工作絕對不錯。嘗試回收應用程序池..或重新啓動IIS服務 – LazyOne

+0

槍的兒子!這工作。請添加您的評論作爲答案,以便我可以接受它。非常感謝! –

回答

0

你的配置是好的 - 在這裏沒有問題。

嘗試回收應用程序池..或重新啓動IIS服務。

+0

如果這不起作用:確保你實際上使用IIS! 什麼對我來說是工程的屬性,選擇Web選項卡,並將「使用Visual Studio開發服務器」更改爲「使用本地IIS Web服務器」,並接受默認的子設置(在我的情況下)「使用IIS Express「和Project Url」http:// localhost:52246 /「。 –