htaccess重写查询字符串在Apache 2.2中消失但在2.4中有效

时间:2014-01-26 09:04:45

标签: php apache .htaccess mod-rewrite query-string

以下是规则:

RewriteRule ^api/([\w-]+)/?$ api.php?method=$1 [QSA]

在本地Apache 2.4服务器上,它允许我重写:

/api/create-account/?name=abcd 

/api.php?method=create-account&name=abcd

在生产服务器上,即Apache 2.2,请求转到api.php。但我发现我的脚本中没有查询字符串参数。如果我转储$_REQUEST$_GET$_POST,我只会获得空数组。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

您需要关闭多重视图:

Options -Multiviews

Multiviews是一个mod_negotiation选项,告诉它尝试将请求与物理文件匹配。当它看到/api/somtehin之类的请求,然后看到有一个名为api.php的文件时,它会立即映射到该文件,完全绕过mod_rewrite。