2012-01-09 146 views
0

在我的.htaccess文件,我已經得到了相當標準的.htaccess重寫重定向的URL

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1 [NC] 

,我只需要做到這一點的文件在我的根目錄。但是,如果我轉到我的一個子目錄(包含或不包含index.php文件)的URL,例如www.foo.com/bar,那麼我將被重定向到www.foo.com/bar/?p=bar - 如何防止添加?p=bar

回答

1

你可以嘗試使規則僅執行非目錄如下

#if it is not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
#then send it to index.php 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1 [NC,L] 
0

您可以將.htaccess文件放入子目錄中。

# /bar/.htaccess 

AllowOverride none 

這應該防止.htaccess繼承。

+0

我不知道,如果這是最好的辦法;他不得不更新所有子目錄,以便在根級別上消除他的過度重寫規則。 – kontur 2012-01-09 13:46:01

+0

嗯,是的。另一種選擇是爲每個子目錄添加一個「RewriteCond」的檢查,但也必須爲每個新目錄維護。但就你而言,這可能更合理...... – clmarquart 2012-01-09 14:00:44