仅限服务器上的Canonical Redirect

Dim*_*tri 2 iis redirect web-config url-rewriting

我可以在www.domain.com上重定向所有domain.com-s,它就像魅力一样在服务器上工作:

<rewrite>
    <rules>
        <rule name="Canonical Host Name" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" negate="true" pattern="^www\.domain\.com$" />
            </conditions>
            <action type="Redirect" url="http://www.domain.com/{R:1}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)

但是有一个副作用 - 当我在测试环境中时,它也可以工作,就像在localhost上一样,它总是在生产服务器上重定向.

如何添加一些仅在服务器上有效的条件?

che*_*fly 6

这可以使用请求主机为domain.com子域的第二个条件来实现:

<rewrite>
    <rules>
        <rule name="Canonical Host Name" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="domain\.com$" />
                <add input="{HTTP_HOST}" negate="true" pattern="^www\.domain\.com$" />
            </conditions>
            <action type="Redirect" url="http://www.domain.com/{R:1}" />
        </rule>
    </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)

(注意你\在你的病情中错过了一个,这redirectType="Permanent"是可选的)