我用的是一个简单的.htaccess使用 PHP 脚本处理所有事情:
RewriteEngine on
RewriteRule . index.php
我的 索引.php目前只是回显服务器变量(带有
print_r($_SERVER)
);一切正常,我在 URL 中输入任何内容,然后 索引.php 内容如下。但是,考虑以下结构:
test/ # document root
folder/ # empty folder
index.php
.htaccess
我注意到,访问[site]/folder
首先会将浏览器重定向到
[site]/folder/
,然后显示正确的索引.php内容。为什么会发生这种情况?重写规则不是应该“按原样”重定向所有内容吗?
这是与虚拟主机一起使用的,用于在本地测试网站。配置最低限度。在我的.htaccess?
<VirtualHost *:80>
ServerName test.local
DocumentRoot /Library/WebServer/Documents/test/
</VirtualHost>
目前使用 OS X 10.10。
答案1
如上面的注释中所述,该DirectorySlash
指令控制了此特定 Apache 行为,而重写规则并未导致此行为。此指令默认为在。如果将其设置为离开,那么当请求一个映射到文件系统上的目录的 URI 时,如果尾部没有斜杠,Apache 就不会将请求重定向到尾部有斜杠的 URI。
此处的文档中有更多信息:https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryslash