子域名使用.htaccess将非www URL重定向到www(301)的问题

时间:2013-03-12 11:07:22

标签: .htaccess redirect

我通过.htaccess重写规则将非www请求重定向到www。

  

RewriteCond%{HTTP_HOST}!^ www

     

RewriteRule(。*)www。%{HTTP_HOST} / $ 1 [L,R = 301]

但现在我遇到子域问题。当我访问touch.111.com时,上述规则会重定向到touch.www.111.com(无法访问),并且网站会在触摸设备上中断。

请告诉我如何解决上述问题。

3 个答案:

答案 0 :(得分:3)

如果您只想将domain.com重定向到www.domain.com并保留子域(例如touch.domain.com),则必须具体说明:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]

答案 1 :(得分:1)

这是一个适用于任何域名的通用解决方案:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

请参阅http://www.htaccessredirected.com/force-redirecting-non-www-to-www-htaccess.htm

答案 2 :(得分:0)

# For sites running on a port other than 80
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://www.example.com:%{SERVER_PORT}/$1 [L,R]

# And for a site running on port 80
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://www.example.com/$1 [L,R]

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html