mod_rewrite 行为异常

mod_rewrite behaving strangely

我想举个例子。com/c/bla 例如。com/bla 当我写的时候它工作正常 example.com/bla 在 url 栏中,但是当我从 example.com 中单击一些 link(example.com/bla)时,它会重定向到 example.com/c/bla

我的 htaccess 代码是这样的

RewriteEngine on
RewriteBase /
Options -Indexes +SymLinksIfOwnerMatch

RewriteCond %{REQUEST_URI} !^/c/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /c/ [L]

这是由于 mod_dir 模块在此重写规则后添加了尾部斜杠。就这样吧:

DirectoryIndex index.php
DirectorySlash Off
Options -Indexes +SymLinksIfOwnerMatch
RewriteEngine on
RewriteBase /home/

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!c/).*)$ c/ [L,NC]

在新浏览器中测试这个以避免旧缓存。