如何将www网址与正则表达式匹配

时间:2011-10-27 08:42:50

标签: asp.net regex web-config

我找到了这个用于检查网址的web.config代码,看看它是否遗漏了www。如果是,那么它将用户重定向到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>
然而,我需要做相反的事情并且我一直在用它进行攻击(我不是很好用正则表达式,无论我尝试多少)试图让它看看网址是否有www然后重定向到非www

原因是我有一个子域

trade.words.co.uk 但我想确保他们不去www.trade.words.co.uk

感谢您提前提供任何帮助

2 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

我猜您只需要使用扩展正则表达式的相反web.config规则来匹配正确的URL,如下所示:

<rewrite>
        <rules>
            <clear />
            <rule name="WWW Rewrite" enabled="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^([\w-]+://?|www[.])([^\s]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))$" />
                </conditions>
                <action type="Redirect" url="http://{R:2}" appendQueryString="true" redirectType="Permanent" />
            </rule>
        </rules>
    </rewrite>

希望这有帮助