我的目录结构类似于:
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/
,这几乎是正确的。)
答案 0 :(得分:1)
这可能是由已停用的DirectorySlash引起的。因此,尝试启用它或使用此规则对mod_rewrite执行相同的操作:
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]