IIS 重写规则不传递参数

Posted

技术标签:

【中文标题】IIS 重写规则不传递参数【英文标题】:IIS rewrite rule not passing parameters 【发布时间】:2021-05-10 00:50:01 【问题描述】:

我目前使用重写映射设置了从 oldsite.com 到 newsite.com 的重定向。它们工作,除非通过 URL 传递参数,例如。 http://oldsite.com?utm_source=go.wayne.edu&utm_medium=direct&utm_campaign=quick-access&utm_content=,仍然会转到旧页面,而不是使用参数重定向到新页面,例如。 http://newsite.com?utm_source=go.wayne.edu&utm_medium=direct&utm_campaign=quick-access&utm_content=.

这是我的代码:

            <rule name="Redirects to New Site">
                    <match url="(.*)" />
                    <conditions trackAllCaptures="true">
                        <add input="RelaunchRedirects:REQUEST_URI" pattern="(.+)" />
                    </conditions>
                    <action type="Redirect" url="http://newsite.com/C:0" appendQueryString="true" redirectType="Permanent" />
            </rule>

对所有这些仍然很陌生,我无法弄清楚为什么参数没有传递。我在这里看到了一些类似的案例,但无法让这些解决方案对我有用。

关于我可以做些什么来完成这项工作的任何想法?

【问题讨论】:

【参考方案1】:

您可以尝试使用此 URL 重写规则:

       <rewrite>
            <rules>
                 <rule name="Redirects to New Site" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions trackAllCaptures="true">
                    </conditions>
                    <action type="Redirect" url="http://newsite.comURL" appendQueryString="true" redirectType="Permanent" />
            </rule>
            </rules>
        </rewrite>

如果有任何问题,请随时告诉我。

【讨论】:

非常感谢!这与我想要做的非常接近,但是,更新后的代码会忽略所有重定向的重写映射。我怎样才能将重写合并到你在这里的内容中并获得相同的结果? 你的意思是你的代码会使 URL 重写规则失效? 谢谢!不,我的意思是 &lt;add input="RelaunchRedirects:REQUEST_URI" pattern="(.+)" /&gt; 行引用是包含所有重定向的重写映射。如果我们删除该行,我们也将删除重定向列表。重写映射本质上是从旧路径到新路径的重定向列表。我们希望保留该重写映射,但仍具有要在您的解决方案中附加的参数。我只是不知道如何结合这两种方法。

以上是关于IIS 重写规则不传递参数的主要内容,如果未能解决你的问题,请参考以下文章

有一个不应硬编码但应在规则调用时作为参数传递的参数[重复]

UI和后台参数传递规则

简单的 .htaccess 重写以传递 1 个参数

RN 如何给页面传参数

如何在 FxCop 的自定义规则中获取传递给方法的参数值?

期末不挂科のJAVA