3

我发现这段代码可以在不使用 url 重写的情况下将 www 添加到 url。

<rewrite>
    <rules>
        <clear />
        <rule name="WWW Rewrite" enabled="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$" />
            </conditions>
            <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

但它似乎不起作用的网址中有一个“-”,例如 scotts-cleaners.com。

这将返回 www.www.scotts-cleaners.com。

有任何想法吗?

4

2 回答 2

1

只需添加-到模式:

<add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9-]+)$" />

由于连字符和字母数字构成了域名中唯一允许的字符,因此您的模式现在应该适用于所有 URL。

于 2012-02-06T12:58:16.843 回答
0
pattern="^www\.([.a-zA-Z0-9-]+)$"

显然连字符不需要在正则表达式中转义^^

于 2012-02-06T12:56:20.300 回答