2010-07-30 67 views
0

在我的.htaccess文件中我有以下網址重寫問題

Options -Indexes 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)/(.*)$ index.php?lang=$1&id=$2 [L] 

所以當我寫http://mydomain.com/am/home它將被重定向到http://mydomain.com?lang=am&id=home


但我有一個cms文件夾,我需要去

http://mydomain.com/cms/index.php當寫

http://mydomain.com/cms但它不會發生。

我該怎麼辦?

謝謝

回答

1

添加RewriteCond

RewriteCond $1 !=cms 
RewriteRule ^(.*)/(.*)$ index.php?lang=$1&id=$2 [B,L] 

當你去/cms,Apache的大概做了301 /cms/,因此您的重寫規則會比賽。這將避免匹配/cms/

+0

太棒了。非常感謝。但在這種情況下,RewriteCond中的$ 1僅指下一個RewriteRule?那麼,如果我有很多Rewriterule? – Simon 2010-07-30 15:58:14

+0

@Syom是的,只有下一個。如果你需要很多,你可以嘗試把它放在其他的之前:'RewriteRule cms/- [L]'。最後(L)停止一輪替換。 – Artefacto 2010-07-30 16:10:24

0

地址:

RewriteRule ^(.*)/?$ $1/index.php [L]

+0

它返回500錯誤。 – Simon 2010-07-30 15:59:22