【问题标题】:.htaccess preserve url on rewrite.htaccess 在重写时保留 url
【发布时间】:2014-06-05 02:21:52
【问题描述】:

我将域重定向到具有以下内容的子文件夹

RewriteCond %{HTTP_HOST} ^domain.net [OR]
RewriteCond %{HTTP_HOST} ^www.domain.net$
RewriteCond %{REQUEST_URI} !subfolder/
RewriteRule ^(.*)$ subfolder/$1 [L]

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

url被重写为

domain/net/subfolder/folderinsidethatsub

有什么办法可以防止这种情况发生吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢你让我省了很多麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    相关资源
    最近更新 更多