Apache为我的重写规则添加了斜杠

时间:2014-09-20 20:37:03

标签: apache .htaccess mod-rewrite

我有一个与现有目录同名的干净路径。

我使用这些.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/

是什么原因?

2 个答案:

答案 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

但是,它可能会通过显示其列表来公开某些目录。

Security Warning

  

关闭尾部斜杠重定向可能会产生信息   披露。考虑mod_autoindex处于活动状态的情况   (Options + Indexes)和DirectoryIndex设置为有效资源(例如,   index.html)并且没有为该URL定义其他特殊处理程序。   在这种情况下,带有斜杠的请求将显示index.html   文件。但是没有尾随斜杠的请求将列出目录   内容。