我有一个简单的重写:
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
。我该如何解决?
答案 0 :(得分:1)
这种情况正在发生,因为mod_dir
模块在mod_rewrite
向目录添加尾部斜杠之后运行。您应该添加条件以避免重写规则中的目录。还使用重定向规则添加尾部斜杠:
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]