RewriteRule未正确传递GET参数

时间:2012-08-01 13:15:56

标签: php regex apache .htaccess mod-rewrite

我为应用程序的API编写了一个简单的正则表达式:

^api/([^/]+)/([^/.]+)\.([^$/?=&]+)(?:\?(.*))?$

这变成了

/app/api/$1.php?action=$2&format=$3&$4

refiddle正则表达式完美无缺,构建正确的URL,但除了actionformat参数之外,PHP脚本不报告任何GET参数。放在/中的.htaccess是

AddType image/svg+xml svg
RewriteEngine on
#If the URL is just /api, give them the docs
RewriteRule ^api/?$ /app/api/apidoc.php [L]
#Example api/user/update.json?x=fff&y=gggg
#http://refiddle.com/2ss
RewriteRule ^api/([^/]+)/([^/.]+)\.([^$/?=&]+)(\?(.*))?$ /app/api/$1.php?action=$2&format=$3&$4 [L]
#Example api/user/update?x=000&y=ffe
RewriteRule ^api/([^/]+)/([^/.&=]+)(\?((.*)*))?$ /app/api/$1.php?action=$2&$3 [L]

提前致谢。

1 个答案:

答案 0 :(得分:2)

不要尝试捕获其他查询字符串参数。相反,请使用QSA标记附加它们。

RewriteRule ^api/([^/]+)/([^/.]+)\.([^$/?=&]+) /app/api/$1.php?action=$2&format=$3 [L,QSA]

相应地调整RewriteRule