正则表达式用于处理子域名并删除www

时间:2013-03-03 12:31:56

标签: regex mod-rewrite

以下是为我工作(删除www),但我注意到开始搞乱一个子域,因为它不够具体

RewriteCond %{HTTP_HOST} !^site.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R,L]

所以我添加了

    RewriteCond %{HTTP_HOST} !^hotels$ [NC]
    RewriteRule ^(.*)$ http://hotels.site.com/$1 [R,L]

显然不对(这第二部分根本不需要) - 然后我明白我需要在第一部分的网址中删除点(句点),但也要使它更具体,现在它不需要匹配www .hotels.site.com - 在这种情况下我仍然想要删除www,但我想重定向到子域。所以简而言之,我总是希望删除www并保持子域工作。

RewriteCond %{HTTP_HOST} !^www\.site\.com$ [NC]

所以这最后一行非常具体,只能与www.site.com匹配

那为什么不呢?

1 个答案:

答案 0 :(得分:0)

^www\.site\.com$只能完全匹配www.site.com

^hotels$只能完全匹配hotels - 或许您的意思是^hotels,它与以hotels开头的任何内容相匹配。

我发现您的要求难以理解,但如果您只想删除www,则可以使用

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^.*$ http://%1/$0 [R,L]