'解决 Apache2 自动补全扩展名的问题'

下午在 Mac 上测试某 Wordpress 站的时候,发现一件很诡异的事情:

如果存在 news.php,那么 Safari 访问 http://wp3.dev/news 的时候会直接访问 news.php 而不执行 URL Rewrite 规则。

祭出 curl 看看 Header :

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Date: Tue, 23 Apr 2013 10:12:23 GMT
Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.4.6 mod_ssl/2.2.22 OpenSSL/0.9.8r
Content-Location: news.php
Vary: negotiate
TCN: choice
X-Powered-By: PHP/5.4.6

看到 Vary: negotiate 这行了咩?

这是因为 Apache2 打开了 MultiViews,所以服务器自动为我们选择了一个最适合的文件返回了。

知道问题在哪儿解决起来就很方便咯,在 Directory 段的 Options 配置项上去掉 MultiViews ,然后重启下 Apache2 就完成了。

PS: Mountain Lion 下一般是在 /private/etc/apache2/httpd-vhosts.conf 或者 /private/etc/apache2/users 里面,不知道长得什么样的话…… 举个栗子好了。

1
2
3
4
5
6
<Directory "/Users/swanaveline/Sites/wp3/public_html">
Options Indexes MultiViews FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>