如何使用.htaccess添加WWW

时间:2014-01-10 18:00:02

标签: apache .htaccess mod-rewrite

我发现有很多问题要问如何做到这一点但是没有一个能为我工作:

####TRYING TO HANDLE WWW HERE
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.|$) [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,NC,L]
</IfModule>

####WORDPRESS RULES
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

####CAKEPHP RULES
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} !^/$
RewriteRule (.*) app/webroot/$1 [L]

我想这样做,以便任何非WWW URL重定向到WWW。*等效。目前,无论我做什么,我都会得到一个重定向循环。

我正在尝试避免对网址进行硬编码,因为它需要在几个不同的服务器上运行,包括子网域上的一些服务器:sub.example.com - &gt; www.sub.example.com

2 个答案:

答案 0 :(得分:1)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond  %{HTTP_HOST} !^www\.  [NC]
RewriteRule  ^(.*)$  http://www.yoursite.com/$1  [R=301,L]
</IfModule>

一直对我有用。您可能不需要IfModule的东西。当然,你在Apache服务器上,对吗? IIS和其他Windows服务器无法识别.htaccess。

答案 1 :(得分:0)

你可以试试这个:

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

它始终适合我。