2010-06-30 98 views
0

我有這個mod重寫在我的htacces,它使一些乾淨的URL;結合強制WWW與乾淨的URL

<IfModule mod_rewrite.c> 

RewriteEngine on 
RewriteBase/

### LANGUAGE REDIRECT RULES start 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(en|nl)-?()?\/(.*\/?)$ index.php?language=$1&region=$2&symphony-page=$3&%{QUERY_STRING} [L] 
### LANGUAGE REDIRECT RULES end 

### FRONTEND REWRITE - Will ignore files and folders 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*\/?)$ ./index.php?symphony-page=$1&%{QUERY_STRING} [L] 

</IfModule> 

現在,我想也迫使WWW,所以我延長了代碼:

<IfModule mod_rewrite.c> 

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

### LANGUAGE REDIRECT RULES start 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(en|nl)-?()?\/(.*\/?)$ index.php?language=$1&region=$2&symphony-page=$3&%{QUERY_STRING} [L] 
### LANGUAGE REDIRECT RULES end 

### FRONTEND REWRITE - Will ignore files and folders 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*\/?)$ ./index.php?symphony-page=$1&%{QUERY_STRING} [L] 

</IfModule> 

然而,這導致沒有我的網頁被人發現。 僅供參考語言重定向將國家代碼參數添加到加載時的URL。

我該如何獲得這些規則?

回答

0

你可能缺少查詢字符串:

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

您也可以使用QSA標誌在你的其他規則,例如:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*\/?)$ ./index.php?symphony-page=$1 [L,QSA,B] 

我也因爲你使用添加B在查詢字符串中的反向引用,所以它需要被轉義。

查看documentation