mod_rewrite尾随斜杠问题

时间:2011-02-16 04:13:28

标签: .htaccess mod-rewrite

我目前使用.htaccess将域重定向到子目录。网址“example.com”成功重定向到“example.com/sub”,“example.com/forums/”将重定向到“example.com/sub/forums”,将子目录“sub”隐藏在地址中酒吧。但是使用“example.com/forums”(没有尾部斜杠)将正确重定向,但在浏览器的地址栏中显示example.com/sub/forums。

我已经尝试修改htaccess文件以在省略时添加尾部斜杠,但这似乎没有帮助。对此问题的任何帮助将不胜感激。

RewriteEngine on
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{REQUEST_URI} !^/sub/
RewriteRule ^(.+) sub/$1 [L]

1 个答案:

答案 0 :(得分:0)

当你需要/论坛时,Apache发现/ forum不是一个文件,而是一个目录/ forum /,所以它会发出一个外部重定向(301重定向)到正确的URL。 你要做的是拦截这种行为:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/sub/
RewriteRule ^(.+) sub/$1

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !/$

实际规则可能有所不同,但你明白了。