mod_rewrite表现得很奇怪

时间:2015-03-04 19:34:47

标签: apache .htaccess mod-rewrite

我想展示example.com/c/bla 作为example.com/bla 我写的时候工作正常 example.com/bla在url栏中,但当我点击example.com的某个链接(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/$1 [L]

1 个答案:

答案 0 :(得分:1)

这是由于在此重写规则之后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/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302]

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

在新浏览器中测试此内容以避免旧缓存。