以下是规则:
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
,我只会获得空数组。
我错过了什么?
答案 0 :(得分:2)
您需要关闭多重视图:
Options -Multiviews
Multiviews是一个mod_negotiation选项,告诉它尝试将请求与物理文件匹配。当它看到/api/somtehin
之类的请求,然后看到有一个名为api.php
的文件时,它会立即映射到该文件,完全绕过mod_rewrite。