【问题标题】:How do I hide actual directories using mod_rewrite?如何使用 mod_rewrite 隐藏实际目录?
【发布时间】:2010-09-14 10:48:07
【问题描述】:

我正在托管相同 wordpress 安装的几个域,现在我想要一个每个域的文件夹,用于存放我需要放在那里的一些不同的文件。

基本上我想像这样映射:

网址路径 webbfarbror.se/f/* _files/webbfarbror.se/* grapefrukt.com/f/* _files/grapefrukt.com/*

这个小 sn-p 很好地完成了这项工作,RewriteCond 让我可以在每个域的基础上启用和禁用它。

ReWriteCond %{HTTP_HOST} webbfarbror.se
ReWriteRule ^f/(.*)$ _files/%{HTTP_HOST}/$1 [L]

但是,http://grapefrukt.com/f/awesome.jpg 上的文件也可以通过其“真实” URL http://grapefrukt.com/_files/grapefrukt.com/awesome.jpg 访问

我所有的尝试都会导致来回无限重定向。

如何禁用通过后一个 URL 的访问?

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    您可以检查发送到服务器的原始请求,该请求以%{THE_REQUEST} 的形式提供。检查/_files/ 前缀表明请求属于后一种类型,然后您可以重定向到适当的格式:

    RewriteCond %{THE_REQUEST} ^[A-Z]+\s/_files/
    RewriteRule ^_files/[^/]+/(.*)$ http://%{HTTP_HOST}/f/$1 [R=301,L]
    

    【讨论】:

    • 这种工作,但由于某种原因它不会匹配子文件夹,例如:grapefrukt.com/_files/grapefrukt.com/games
    • @grapefrukt - 嗯,它似乎在我的测试服务器上工作正常。该目录中是否有 .htaccessmod_rewrite 指令?
    • 事实证明这确实有效,我怀疑我的主机上正在进行某种类型的重写缓存。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2015-07-10
    • 2010-12-31
    • 2013-12-27
    • 2021-07-08
    相关资源
    最近更新 更多