mod_rewrite并且不要放www。如果子域已存在

时间:2011-07-29 18:01:56

标签: .htaccess mod-rewrite subdomain

我目前的.htaccess设置:

RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]

如果我有m.mysite.com的子域名,我该如何跳过添加www。到它的前面?当我只想要www.m.mysite.com时,上面的规则将我的网址设置为m.mysite.com

我将此规则放在我的.htaccess中,因为我需要mysite.com重定向到www.mysite.com

感谢您的帮助。如果我找到答案,我会发布答案。

2 个答案:

答案 0 :(得分:0)

对第2行的以下更改应该有效。 (另)

RewriteCond %{HTTPS} (on)?

RewriteCond %{HTTP:Host} ^([^.]+\.[^.]+)$ [NC]

RewriteCond %{REQUEST_URI} (.+)

RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]

编辑:(解释)此代码仅在主机中只有1个点时才添加www。超过1个点意味着存在子域

答案 1 :(得分:0)

尝试此规则:

RewriteCond %{HTTP_HOST} =mysite.com [NC]
RewriteCond %{HTTPS} (on)?
RewriteRule .* http(?%1s)://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

主域名将采用硬编码(仅提及一次)..但这是最佳方式。