2013-10-25 122 views
1

此代碼工作正常:htaccess的:301重定向不能正常工作

RewriteEngine On 
RewriteBase /my/project/dir/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /my/project/dir/index.php?uri=$1 [QSA,L] 

但現在我想迫使www.的URL內,以避免duplicate content(SEO)。我發現這個代碼片斷,但我不能將它融入我的代碼:

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

我嘗試了一些組合,但我不想混淆你。他們都沒有工作。

您將如何擴展第一個(工作)代碼行來完成目標?提前致謝!

+1

會發生什麼? –

+0

@JoachimIsaksson感謝您的回覆。我之前試過,結果是:它忽略了'RewriteBase'。當我嘗試打開'domain.com/users/list/?filter = 1'時,它會重定向到'www.domain.com?filter = 1'。 –

回答

1

更改規則的順序並使用301規則%{REQUEST_URI}:如果你只是從第二片段取出`RewriteEngine`並插入其他兩行權後`RewriteBase`

RewriteEngine On 
RewriteBase /my/project/dir/ 

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] 
RewriteRule^http://www.domain.com%{REQUEST_URI} [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /my/project/dir/index.php?uri=$1 [QSA,L]