我有一个与现有目录同名的干净路径。
我使用这些.htaccess规则来支持路径的干净路径:
RewriteCond ${REQUEST_URI} ^/mydir
RewriteCond ${REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
一切正常(我有一个" mydir"干净的路径工作,我可以直接访问/ mydir目录中的现有文件),但是apache会一直将尾随斜杠附加到请求。
我请求http://domain.com/mydir
,并将301
重定向到http://domain.com/mydir/
。
是什么原因?
答案 0 :(得分:0)
Apache的正确URL始终以斜杠/
结尾。因为它将URL视为磁盘文件路径(始终以斜线结尾)。如果不存在,服务器需要再执行一步以在内部添加它。我说让它成为。
另外Google(据说)喜欢尾随斜杠。
我说保持原样。
请阅读更多内容:http://cdivilly.wordpress.com/2014/03/11/why-trailing-slashes-on-uris-are-important/
在这里:http://bit.ly/1uSvbfy:)
答案 1 :(得分:0)
在名为/mydir/
的Apache模块添加mod_dir
之后的尾部斜杠,在所有目录之后添加一个尾部斜杠。这是因为默认情况下此设置已开启:
DirectorySlash On
您可以使用以下方式将其关闭:
DirectorySlash Off
但是,它可能会通过显示其列表来公开某些目录。
关闭尾部斜杠重定向可能会产生信息 披露。考虑mod_autoindex处于活动状态的情况 (Options + Indexes)和DirectoryIndex设置为有效资源(例如, index.html)并且没有为该URL定义其他特殊处理程序。 在这种情况下,带有斜杠的请求将显示index.html 文件。但是没有尾随斜杠的请求将列出目录 内容。