当我向服务器请求一个没有扩展名但不是目录的 URL 时,apache 会自动为其添加 .php 扩展名。此行为在哪里配置?
编辑:抱歉,我的问题不清楚:我不是问如何做到这一点,我只是发现我的本地服务器(Debian 上的 Apache/2.2.11)可以自行完成此操作(即我没有重写规则)并且我想知道可以在哪里配置它。
答案1
Debian(您提到 Apache 2.2.11 时指的是当前版本,介于 Lenny 和 Sid 之间)在 中默认MultiViews
启用了/var/www
和目录的选项。启用此选项后,Apache 将尝试将 URI 请求与其知道的扩展名的任何文件进行匹配。也就是说,如果 URI 正在请求,它将尝试、、等操作,直到找到匹配项。/usr/share/doc
/etc/apache2/sites-enabled/000-default
/test
test.php
test.html
test.txt
答案2
有几种方法可以做到这一点。我会使用 mod_rewrite 方法:
- 允许任何以 .php 结尾的 URL(.jpg 等)通过,如果匹配则为最后一条规则
- 重写 URL 以 .php 结尾,如果匹配则为最后一条规则