我有.htaccess
DirectorySlash On
RewriteEngine On
RewriteRule /?\.htaccess$ - [F,L]
# Remove trailing slash
RewriteRule ^(.*)/$ /project/$1 [R,L]
# Map every link to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/project/index.php.*$
RewriteRule ^(.*)$ /project/index.php?___MYROUTER=$1 [QSA,END]
但是当我导航到我的.htaccess
文件旁边的目录之一,例如浏览器中的css
文件夹时,使用以下地址:
然后我的地址将更改为:
在firefox中这就是结果:
页面未正确重定向
Firefox检测到服务器正在重定向请求 这个地址永远不会完成。
This problem can sometimes be caused by disabling or refusing to accept cookies.
但是那些没有指向现有目录的其他地址就像是:
此地址没问题,不会更改为其他任何内容
我的.htaccess
有什么问题?
这是我的log文件
答案 0 :(得分:0)
这是因为Apache在mod_dir
模块完成执行后在目录前添加了一个尾部斜杠。
您可以使用单独的规则在目录前添加尾部斜杠。
DirectorySlash On
RewriteEngine On
RewriteRule /?\.htaccess$ - [F,L]
# Remove trailing slash for non directories
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /project/$1 [R,L]
# add a trailing slash to directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE]
# Map every link to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/project/index\.php [NC]
RewriteRule ^(.*)$ project/index.php?___MYROUTER=$1 [QSA,END]