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 重写规则失效? 谢谢!不,我的意思是<add input="RelaunchRedirects:REQUEST_URI" pattern="(.+)" />
行引用是包含所有重定向的重写映射。如果我们删除该行,我们也将删除重定向列表。重写映射本质上是从旧路径到新路径的重定向列表。我们希望保留该重写映射,但仍具有要在您的解决方案中附加的参数。我只是不知道如何结合这两种方法。以上是关于IIS 重写规则不传递参数的主要内容,如果未能解决你的问题,请参考以下文章