在我的.htaccess文件中,我有
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(swf|gif|jpe?g|png|css|txt|js|json|xml|ico)$
RewriteRule ^(.*)/?$ index.php?page=$1 [QSA,L]
如果我有一个名为myfiles
的目录,并且在浏览器地址栏中我转到http://localhost/mysite/myfiles/
一切都很好,但是如果我转到http://localhost/mysite/myfiles
(没有斜杠),地址栏中的网址更改为http://localhost/mysite/myfiles/?page=myfiles
如何更改.htaccess以便它不会更改URL并公开变量?为什么它首先会这样做?
答案 0 :(得分:1)
这是因为mod_dir将不以斜杠结尾的目录的请求重定向到那些执行的目录,并且有一个very good reason why it must do this。
您需要做的是关闭mod_dir和/或自己重定向这些斜线:
DirectorySlash off
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ /$1/ [L,R=301]
RewriteCond %{REQUEST_URI} !\.(swf|gif|jpe?g|png|css|txt|js|json|xml|ico)$
RewriteRule ^(.*)/?$ index.php?page=$1 [QSA,L]