【问题标题】:IIS rewrite rule not passing parametersIIS 重写规则不传递参数
【发布时间】: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>

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

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

【问题讨论】:

    标签: redirect iis url-parameters


    【解决方案1】:

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

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

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

    【讨论】:

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