2015-08-20 82 views
1

我有一個簡單的重寫:htaccess的 - 重寫規則重定向到錯誤的URL

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?p=$1 [QSA] 

任何不存在的文件應該被轉發到index.php。但是,有一個目錄,images,其中有七個圖像,但沒有index.php|html。當我打開localhost/images,沒有接近斜線(localhost/images/工作正常),它將我重定向到localhost/images/?p=images。我應該如何解決這個問題?

回答

1

由於在mod_rewrite之後運行的mod_dir模塊發生這種情況,因此在目錄中添加了尾部斜線。您應該添加一個條件以避免重寫規則中的目錄。還要使用重定向規則添加尾部斜線:

RewriteEngine on 

# add a trailing slash to directories 
RewriteCond %{DOCUMENT_ROOT}/$1 -d 
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302] 

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