4

我正在尝试使用一个名为“rewritemaps.config”的单独配置文件,其中包含我要重定向的 URL。该文件位于根目录中(与 web.config 相同的位置)。我拥有的 Redirects.config 文件的格式是:

<rewriteMaps>
    <rewriteMap name="Redirects">
        <add key="aspx/drvmain.aspx"
             value="http://www.newdomain.com/folder2/page2.aspx" />
        <add key="aspx/jobs_AboutUs.aspx"
             value="http://www.newdomain.com/folder1/jobs.aspx" />
        <add key="aspx/page.aspx"
             value="http://www.newdomain.com/folder1/page2.aspx" />
    </rewriteMap>
</rewriteMaps>

在我的 web.config 文件中,我有:

<system.webServer>
    <rewrite>
        <rewriteMaps configSource="rewritemaps.config" />
            <rules>
                <rule name="Redirect rules">
                    <match url=".*" />
                    <conditions>
                        <add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
                    </conditions>
                    <action type="Redirect" redirectType="Permanent"
                            url="{C:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewriteMaps>
    </rewrite>
</system.webServer>

在 IIS 管理器中(是的,我已经安装了 URL 重写模块),我什至已经针对我在 redirects.config 文件中的一个 URL 测试了规则和条件,它说它有效。但是当我尝试在浏览器中访问 URL 时,它并没有按照我指定的那样重定向。在 rewritemaps.config 文件中,我尝试放置完整的域,并尝试在 aspx 之前使用“/”。似乎没有任何效果。我不确定我在这里缺少什么。

4

2 回答 2

4

好吧,我让它工作了。有什么愚蠢的。在 rewritemaps.config 文件中,我需要在密钥 URL 之前使用“/”。我知道我以前曾尝试过,但当时我一定是在其他地方遗漏了一些东西。那好吧。现在可以了。

于 2013-01-11T18:22:50.350 回答
0

确实很难确定失败的原因,但您可以做的最好的事情是使用失败的请求跟踪,以便 IIS 告诉您正在发生的事情。使用 FREB,您将获得详细的跟踪信息,告诉您评估了哪些规则以及它们是否匹配以及为什么不匹配。您还可以查看要匹配的“正确”模式以及评估的每个条件。

请参阅以下链接: http ://www.iis.net/learn/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules

于 2013-01-11T02:03:10.840 回答