我正在使用以下
将域重定向到子文件夹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
有没有办法阻止这种情况?
答案 0 :(得分:1)
这可能是因为mod_dir将没有尾部斜杠的目录的任何请求重定向到相同的URL但是带有斜杠。这有一个非常好的原因,因为它可以防止文件夹的内容被暴露(即使你有一个索引文件)。保持mod_dir执行此操作的唯一方法是关闭DirectorySlash
指令,但是,您需要mod_rewrite规则手动添加尾部斜杠,否则人们将能够公开目录的内容。将此添加到您已有的规则之上:
DirectorySlash Off
RewriteCond %{DOCUMENT_ROOT}/subfolder%{REQUEST_URI} -d
RewriteRule ^(.+[^/])$ /$1/ [L,R=301]