禁用尾部斜杠会弄乱网址

时间:2016-03-11 13:51:41

标签: .htaccess

我正在使用AMPPS在Mac上的本地网站(OSX 10.11.3)上工作。我在网站的根目录中创建了一个.htaccess文件,位于/Applications/AMPPS/www。这是文件的内容

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
DirectorySlash Off

我不是100%确定第1行是什么,但是它适用于第4-5行。我添加了第3行来尝试解决我的问题,但它没有帮助(我将在下面解释这个问题)。第6行似乎是问题所在。我添加它是因为我不需要相对网址,我希望网址看起来更清洁。

每当我转到localhost/asf时,它都没有拖尾斜线(就像我想要的那样)。但是,如果我添加尾部斜杠localhost/asf/,则会将网址重定向到localhost/Applications/AMPPS/www/asf,其中/Applications/AMPPS/www/asfasf相对于我的计算机根目录的位置。< / p>

另请注意,当我使用“foo”而不是“asf”尝试此操作时,网址根本没有重定向。含义localhost/foo/保持不变,完全没有变化。

这可能是Mac或AMPPS问题,但有没有人能解决至少我遇到的第一个问题(重定向到我电脑的根目录)?

1 个答案:

答案 0 :(得分:1)

这是因为您已经转换DirectorySlash Off意味着现在可以使用或不使用尾部斜杠访问您现有的目录。

您现在面临的问题是,如果您使用尾随斜杠请求它们,那么您的“存在可怕”会被重写为/index.html

要避免此行为,您需要使用以下RewriteCond从规则中排除您的真实目录:

RewriteCond %{REQUEST_FILENAME} !-d

使用此RewriteCondition  ,您可以在 / dir 或结尾处使用或不使用斜杠连接到您的目录  的 /目录/

 DirectorySlash Off
 Options -MultiViews
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^ index.html [QSA,L]