2

我试图优雅地捕获大量需要重定向到单个域的域,例如:

mydomain.com, www.mydomain.com, mydomain-eu.com, mydomain.eu

全部到主域:

www.mydomain.co.uk

通过创建站点,我可以在 IIS 中相当轻松地做到这一点 - 绑定所有域并进行重定向。

但是有一个问题。客户希望在谷歌分析中跟踪这些重定向的来源。

所以他们需要在重定向 URL 中传递一些参数,例如(使用上面的域):

mydomain.eu 重定向到:www.mydomain.co.uk?utm_campaign=mydomain.eu&utm_source=mydomain.eu&utm_medium=referral

所以 - 这是使用 URL 重写的好例子。这就是我在 web.config 中的内容:

   <rule name="Redirect" enabled="false" patternSyntax="Wildcard" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^www.mydomain.co.uk$" negate="true" />
            </conditions>
            <action type="Redirect" url="http://www.mydomain.co.uk/?utm_campaign={R:0}&amp;utm_source={R:0}&amp;utm_medium=referral" />
        </rule>

如果输入与我想要的域不匹配,我将重定向它。

除了一件事之外,它还可以完美地工作。我只是无法获取原始域的参数。{R:0} 返回空白。我也试过 {C:0} 。我已经测试了 GUI 中的模式,他们告诉我应该得到请求的域。

我究竟做错了什么?谢谢。

4

2 回答 2

1

这是一个猜测,但又如何:

<rule name="Redirect" enabled="false" patternSyntax="Wildcard" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="^www.mydomain.co.uk$" negate="true" />
        </conditions>
        <action type="Redirect" url="http://www.mydomain.co.uk/?utm_campaign={HTTP_HOST}&amp;utm_source={HTTP_HOST}&amp;utm_medium=referral" />
</rule>

查了一下,它说您可以在本文档中以这种方式使用它:

于 2013-07-22T12:42:35.690 回答
0

感谢@rtpHarry 的指导。虽然上述规则对我不起作用,但我设法为我的 IIS7 服务器调整了它。

<rule name="Redirect" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^www.tsogosundigishare.com$" negate="true" />
    </conditions>
    <action type="Redirect" url="http://www.tsogosundigishare.com/" redirectType="SeeOther" />
</rule>

通过从规则中删除enabled="false"and patternSyntax,它将规则从 " Wildcard" 转换为 " Regular Expression" 并正确添加redirectType="SeeOther"重定向。

于 2014-09-11T23:59:54.933 回答