【发布时间】:2012-01-16 15:16:58
【问题描述】:
我有这个问题,所有的 URL 像 context/path/file/anything/that/follows 变成 context/path/file.php/anything/that/follows 或 context/path/file.xml/anything/that/follows。
我有以下重写规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^service/(.*)$ service.php?xyz=1 [L,QSA]
应该将任何以service/... 开头的URL 映射到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 的时候没有出现过,所以苹果提供的配置肯定有一些变化。我就是不知道是什么。
有没有办法可以禁用这个功能?
还是我完全偏离了轨道,做了一些愚蠢的事情?
顺便说一句,这与 mod_rewrite 无关,因为启用或禁用它,或者从 .htaccess 中删除重写规则会改变任何事情。即使 mod_rewrite 被禁用,URL service/my/parameter 仍然指向 service.xml/my/parameter。
现在,我刚刚从 url 中取出查询字符串,并在 PHP 文件中手动解析它。但我知道这不是正确的做法。
【问题讨论】:
标签: apache url configuration rewrite