2011-11-09 96 views
0

我有這行代碼的一切:國防部重寫 - 重寫,但

RewriteRule ^(.*)/$ allcities.php?state=$1 [QSA,L] 

Howver我如何改變它,所以它不會重寫一個新的目錄我已經建立,如「管理員」。正如目前正在改寫的那樣。

回答

3

您可以使用RewriteCond了點。它使正則表達式恢復其意義。因此,在這種情況下,如果請求URI不以/admin開頭,則條件爲真。

欲知更多信息,請參閱mod_rewrite documentation

+0

謝謝。但是,如果有一個以admin開頭的文件,會發生什麼?你可以改變它/管理/沒有任何問題? – Brett

+0

是的,你可以使用你需要的任何正則表達式,例如'^/admin /?$'這將匹配具有可選尾部斜線的路徑。 –

+1

@HolgerJust我認爲你的意思是'^/admin(/ | $)' - 你寫的規則只會與/ admin或/ admin /完全不匹配。 – fluffy

0

重寫規則按收到的順序處理。在處理規則之前,您需要有一個處理程序將路由到現有目錄。例如:在RewriteCond正則表達式之前

RewriteCond %{REQUEST_URI} !^/admin 
RewriteRule ^(.*)/$ allcities.php?state=$1 [QSA,L] 

注意感嘆號:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ allcities.php?state=$1 [QSA,L]