Apache mod重写是在mac上自动添加文件扩展名

时间:2016-02-17 16:10:19

标签: regex apache .htaccess mod-rewrite

我和我的同事正在Windows(2.4.18)上使用apache,在mac(2.4.16)上使用apache。我们正在使用SVN进行保存项目。

除了一些图像之外的所有请求都使用以下.htaccess文件重定向到index.php。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteCond %{REQUEST_FILENAME} !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.woff2)$
RewriteRule ^([^?]*)$ /index.php?path=$1 [NC,L,QSA]

当从windows访问“/ c-panel / folder / something”时,$ _GET中的路径参数就像它应该是“/ c-panel / folder / something”一样。当在mac路径上访问相同的URL时,param是“/c-panel/folder/something.php”。请记住,两个操作系统上实际存在something.php文件。那么为什么MAC apache最后会添加.php,什么时候不应该呢?它是什么时候来的?

提前致谢!

1 个答案:

答案 0 :(得分:3)

这是由于在OSX Apache上启用了MultiViews选项。您可以在.htaccess顶部使用此行关闭它:

Options -MultiViews

MultiViews使用选项Apache's content negotiation modulemod_rewrite之前运行,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php