2012-08-29 43 views
4

我使用下面的.htaccess代碼:的.htaccess重寫規則的國家代碼和網址

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^ca/(.+)$ /index.php?p=$1&c=ca [L,QSA] 
RewriteRule ^fr/(.+)$ /index.php?p=$1&c=fr [L,QSA] 
RewriteRule ^(.+)$ /index.php?p=$1 [L,QSA] 

爲了達到以下效果:

http://xyz.com/ca/test -> http://xyz.com/index.php?p=test&c=ca 
http://xyz.com/fr/test -> http://xyz.com/index.php?p=test&c=fr 
http://xyz.com/test -> http://xyz.com/index.php?p=test 

但它與服務器錯誤而失敗。任何想法如何解決它?

由於

回答

2

RewriteCond條件僅適用於緊跟在(多個)條件的RewriteRule。你的最後2條規則對它們沒有任何條件,規則正在循環。只需在最後2條規則的前面添加2個條件:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^ca/(.+)$ /index.php?p=$1&c=ca [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^fr/(.+)$ /index.php?p=$1&c=fr [L,QSA] 

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

修復了它!也就是說,http://xyz.com/ca轉換爲http://xyz.com/index.php?p=ca&c=在這種情況下。我怎麼能涵蓋這種情況? – Edward