尽管有 RewriteRule,Apache 仍添加尾部斜杠

尽管有 RewriteRule,Apache 仍添加尾部斜杠

我用的是一个简单的.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

相关内容