.htaccess在Apache上从非www重定向到www版本

.htaccess在Apache上从非www重定向到www版本,apache,.htaccess,redirect,Apache,.htaccess,Redirect,我正在尝试将我的网站从非www重定向到www版本,我在服务器的.htaccess上使用了以下代码,但它不起作用。我错过了什么 多谢各位 RewriteEngine On ### re-direct to www RewriteCond %{http_host} !^www.topdentists.co.uk [nc] RewriteRule ^(.*)$ http://www.topdentists.co.uk/$1 [r=301,nc] 试试这个: RewriteEngine On Rew

我正在尝试将我的网站从非www重定向到www版本,我在服务器的.htaccess上使用了以下代码,但它不起作用。我错过了什么

多谢各位

RewriteEngine On
### re-direct to www
RewriteCond %{http_host} !^www.topdentists.co.uk [nc]
RewriteRule ^(.*)$ http://www.topdentists.co.uk/$1 [r=301,nc] 
试试这个:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
这是更通用的,适用于任何站点,而不仅仅是您当前正在使用的站点。摘自:对代码的解释在文章下面的第二条注释中


我认为您的代码不起作用的原因是RewriteCond使用了正则表达式,但您没有转义正则表达式中的点。

要正确处理任何潜在的https请求以及任何奇怪的字符,通常建议使用以下方法:

# From http://stackoverflow.com/a/4958847/1078583
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]