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

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

我已经编写了一个外部重定向文件,供站点使用。重定向工作得很好,但是当我添加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>

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

尝试回收应用程序池。。或者重新启动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”。