mod_autoindex不遵守mod_rewrite规则

时间:2010-08-08 04:44:47

标签: apache mod-rewrite mod-autoindex

我的目录结构类似于:

public_html/
  example.com/
    index.php
    subdir/
      file.jpg

我正在使用共享托管,因此http://example.com映射到/public_html/的根目录,我无法更改此内容。我添加了一个mod_rewrite规则来处理这个问题:

RewriteEngine On
RewriteRule ^$ example\.com/ [L]
RewriteRule (.*) example\.com/$1/ [L]

如果我浏览到http://example.com/subdir(没有尾随/),则会列出 file.jpg ,但其网址为http://example.com/file.jpg。父目录链接为http://example.com/example.com/

如果我浏览到http://example.com/subdir/(尾随/),它会列出 file.jpg 并使用正确的网址:http://example.com/subdir/file.jpg。但是,父目录链接是http://example.com/example.com/subdir/

我对发生的事情感到非常困惑,我很乐意为此提供帮助。

(请注意,如果我在mod_rewrite规则中取消最后的/,那么在没有http://example.com/subdir的情况下转到/会重定向到http://example.com/example.com/subdir/变体。此外, http://example.com/subdir/列表的父目录更改为http://example.com/example.com/,这几乎是正确的。)

1 个答案:

答案 0 :(得分:1)

这可能是由已停用的DirectorySlash引起的。因此,尝试启用它或使用此规则对mod_rewrite执行相同的操作:

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]