使用RewriteRule会导致索引文件不可读

时间:2011-10-03 20:34:45

标签: .htaccess mod-rewrite apache2

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

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

  

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

这在目录文件夹中加载文件时效果很好,但是除非我把它放在目录文件夹中,否则找不到html根文件夹中的index.html。在此先感谢您的帮助。我已经在这个网站上重复了所有重写Q& A!

2 个答案:

答案 0 :(得分:0)

您的重写规则就像是从根目录中接收请求并将文件名附加到/ directory /。这可以解释为什么root中的文件不能正常工作,除非还存在于/ directory /文件夹中。

答案 1 :(得分:0)

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

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

RewriteCond %{REQUEST_URI} !(.)directory 

因为它的请求URI类似于/index.html并且它与条件匹配(您的条件:请求URI不应该以{{1​​}}开头)
因此,mod_rewrite会将您的网址重写为新网址:/directory
这等于自己请求directory/index.html。这就是你应该把这个文件放在“目录”目录中的原因。