【问题标题】:Using RewriteRule causes index file to be unreadable使用 RewriteRule 导致索引文件不可读
【发布时间】:2011-11-30 05:15:47
【问题描述】:

这是我的设置: http://example.com/directory/

在该文件夹中加载页面时,我试图隐藏“目录”。我将 html 根目录中的 .htaccess 文件更新为:

选项 +FollowSymLinks
重写引擎开启
RewriteCond %{REQUEST_URI} !(.)目录
RewriteRule ^(.
)$ 目录/$1

这在加载目录文件夹中的文件时效果很好,但是除非我将它放在目录文件夹中,否则找不到 html 根文件夹中的 index.html。提前感谢您的帮助。我已经浏览了这个网站上所有的重写问答!

【问题讨论】:

    标签: .htaccess mod-rewrite apache2


    【解决方案1】:

    dougajmcdonald 解释得够多了,但我用另一种方式解释,所以赏金是他的:-)

    当您请求index.html 文件时,mod-rewrite 会检查您的重写条件:

    RewriteCond %{REQUEST_URI} !(.)directory 
    

    因为它的请求 URI 类似于 /index.html 并且它符合条件(您的条件:请求 URI 不应以 /directory 开头)
    因此,mod_rewrite 将您的 URL 重写为新的:directory/index.html
    相当于自己请求directory/index.html。这就是您应该将该文件放在 "directory" 目录中的原因。

    【讨论】:

    • 谢谢!呃...死亡 :) 你的意思是 htaccess 文件应该放在目录中,对吧?
    • @dwarbi 不,如果你把那个 .htaccess 放在 directory 中,你只是添加了另一个 directory,如果你想要使用根文件夹中的一些文件,你应该为此添加另一个条件!
    【解决方案2】:

    对我来说,您的重写规则看起来像是您从根目录中获取请求并将文件名附加到 /directory/。这可以解释为什么根目录中的文件直接不工作,除非也存在于 /directory/ 文件夹中。

    【讨论】:

    • 但是“目录”成功隐藏在 URL 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多