我正在使用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/asf
是asf
相对于我的计算机根目录的位置。< / p>
另请注意,当我使用“foo”而不是“asf”尝试此操作时,网址根本没有重定向。含义localhost/foo/
保持不变,完全没有变化。
这可能是Mac或AMPPS问题,但有没有人能解决至少我遇到的第一个问题(重定向到我电脑的根目录)?
答案 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]