配置Apache不重写FILE + SLASH的URL

时间:2011-12-09 09:45:20

标签: apache url configuration rewrite

我遇到此问题,其中context/path/file/anything/that/follows等所有网址都变为context/path/file.php/anything/that/followscontext/path/file.xml/anything/that/follows

我有以下重写规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^service/(.*)$ service.php?xyz=1 [L,QSA]

应该将以service/...开头的任何网址映射到service.php。现在,问题是,如果名为service.xml的XML文件与.htaccess位于同一文件夹中,则URL将映射到该文件。如果存在PHP文件,则会转到PHP文件。 XML文件优先,即如果目录中同时存在XML文件和名为service.*的PHP文件,则会选择XML文件。

我在Mac OS X 10.7(Lion)上安装了PHP 5.3,Apache 2.x.当我使用OS X 10.6时,此问题以前没有发生过,因此Apple提供的配置必须有一些变化。我只是无法弄清楚是什么。

有没有办法可以禁用 functoinality

或者我完全偏离轨道,并且愚蠢的东西?

BTW,这与mod_rewrite无关,因为启用或禁用它,或从.htaccess删除重写规则会改变任何内容。即使已禁用mod_rewrite,网址service/my/parameter仍指向service.xml/my/parameter

目前,我刚刚从网址中取出了查询字符串,并在PHP文件中手动解析了它。但我知道这不是正确的做法。

1 个答案:

答案 0 :(得分:3)

这似乎是启用了MultiViews选项。

尝试在Options -MultiViews部分(或.htaccess)中添加<Directory>