2012-04-29 93 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>