1

我在我的 Mac OS X (10.8) 开发计算机上遇到了一个奇怪的问题。我将 mod_rewrite 配置为打开,它似乎在某些情况下确实有效。我现在有一个测试规则,我正在努力工作,但它不会,除非我改变规则做一些我不想要的事情。

这是规则:

RewriteRule ^driver/([0-9]+)$ driver.php?d=$1 [L]

现在,如果我尝试调用驱动程序/411。apache 似乎正在做的是调用没有 GET 参数的 driver.php 并完全忽略 .htaccess 规则。我知道这是真的,因为这个带有硬编码值的规则也失败了:

RewriteRule ^driver/([0-9]+)$ driver.php?d=411 [L]

但是,如果我将要查找的前缀替换为与文件名前缀不匹配,则它可以工作:

RewriteRule ^driverz/([0-9]+)$ driver.php?d=$1 [L]

有谁知道我如何告诉 apache 不要这样做?

4

1 回答 1

2

这是因为在应用 mod_rewrite get 之前,MultiView 在内部重定向到 driver.php。所以不会有 GET 参数。

通过将以下内容添加到您的 htaccess 来禁用 MultiViews:

Options -MultiViews

(PS Apache 应该默认禁用此功能。无论如何,谁使用 MultiViews)

于 2013-01-23T19:49:13.870 回答