2012-04-29 59 views
0

我正在使用以下重定向我的非www。网址使用WWW:htaccess强制www和保持追踪url

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

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

</IfModule> 
<IfModule mod_headers.c> 
Header set Access-Control-Allow-Origin "http://www.domain.com/" 
</IfModule> 

但是,如果有人访问domain.com/abc-123它重定向到www.domain.com,失去URL的剩余。

对此有何帮助?我如何设置它,所以它不会删除网址的结尾?

Miro

+0

http://www.askapache.com/htaccess/modrewrite-tips-tricks.html#Require_the_www – Casper 2012-04-29 12:11:16

+0

http://snipplr.com/view/13398/ – Casper 2012-04-29 12:13:07

+0

网站已停在这两个领域,所以我想避免将硬编码到htaccess文件中。 – Miro 2012-04-29 12:14:01

回答

1

只交换规则的顺序。由于第一条(WP)规则剥离了路径,所以在应用第二条规则时,路径将为空。

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

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

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
<IfModule mod_headers.c> 
Header set Access-Control-Allow-Origin "http://www.domain.com/" 
</IfModule>