我正在使用AMPPS在我的Mac (OSX10.11.3)上开发一个本地网站。我在网站的根目录(位于/Applications/AMPPS/www )中创建了一个/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行似乎是问题所在。我添加它是因为我不需要相对的url,我希望url看起来更干净一些。
无论何时我去localhost/asf,它都没有尾随斜杠(正如我想要的那样)。但是,如果我添加一个尾随斜杠localhost/asf/,url将被重定向到localhost/Applications/AMPPS/www/asf,其中/Applications/AMPPS/www/asf是asf相对于我的计算机根目录的位置。
另外,当我尝试使用"foo“而不是"asf”时,url根本没有重定向。意思是localhost/foo/保持原样,一点变化也没有。
这可能是Mac或AMPPS问题,但是否有人有至少第一个问题的解决方案(重定向到我的计算机的根目录)?
发布于 2016-03-16 10:08:29
这是因为您已经打开了DirectorySlash Off,这意味着现在可以使用或不使用拖尾斜杠来访问现有的dirs。
你现在面临的问题是,如果你用一个尾随斜线请求它们,它们将被重写到/index.html。
为了避免这种行为,需要使用以下RewriteCond将真正的目录排除在规则之外:
RewriteCond %{REQUEST_FILENAME} !-d使用此RewriteCondition,您可以连接到在/dir或/dir/末尾有斜杠或没有斜杠的dir。
DirectorySlash Off
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]https://stackoverflow.com/questions/35942001
复制相似问题