.htaccess在重写时保留url

时间:2014-04-21 03:17:17

标签: apache .htaccess mod-rewrite url-rewriting web

我正在使用以下

将域重定向到子文件夹
RewriteCond %{HTTP_HOST} ^domain.net [OR]
RewriteCond %{HTTP_HOST} ^www.domain.net$
RewriteCond %{REQUEST_URI} !subfolder/
RewriteRule ^(.*)$ subfolder/$1 [L]

但是,如果我访问domain.net/folderinsidethatsub

将网址重写为

domain/net/subfolder/folderinsidethatsub

有没有办法阻止这种情况?

1 个答案:

答案 0 :(得分:1)

这可能是因为mod_dir将没有尾部斜杠的目录的任何请求重定向到相同的URL但是带有斜杠。这有一个非常好的原因,因为它可以防止文件夹的内容被暴露(即使你有一个索引文件)。保持mod_dir执行此操作的唯一方法是关闭DirectorySlash指令,但是,您需要mod_rewrite规则手动添加尾部斜杠,否则人们将能够公开目录的内容。将此添加到您已有的规则之上:

DirectorySlash Off

RewriteCond %{DOCUMENT_ROOT}/subfolder%{REQUEST_URI} -d
RewriteRule ^(.+[^/])$ /$1/ [L,R=301]