我正在使用以下命令将域重定向到子文件夹

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 票数:1 已采纳

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

DirectorySlash Off

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

  ask by user3037561 translate from so

未解决问题?本站智能推荐: