IIS7 web.config文件不支持重定向和404同时

时间:2011-09-01 21:36:48

标签: iis-7 url-rewriting

我已经编写了一个外部重定向文件,可以在网站中使用。重定向工作完美,但是当我添加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>

1 个答案:

答案 0 :(得分:0)

您的配置很好 - 这里没有问题。

尝试回收应用池..或重新启动IIS服务。