Apache htaccess重写规则不匹配

时间:2012-11-27 21:16:31

标签: regex apache .htaccess mod-rewrite

我正在尝试匹配像

这样的网址
http://www.example.org/?h=b1c60d1bf7c7119fef9fc726068e1418166.xml

?h=b1c60d1bf7c7119fef9fc726068e1418166.jsonp&callback=testing

并像这样重写:

?h=b1c60d1bf7c7119fef9fc726068e1418166&output=true&format=true&data_type=xml

?h=b1c60d1bf7c7119fef9fc726068e1418166&output=true&format=true&data_type=jsonp&callback=testing

这是我想出的正则表达式的.htaccess文件。

RewriteEngine On

RewriteBase /
RewriteRule ^/?\?h=([a-z0-9]+)\.(xml|json|jsonp|rss)(\&callback=[a-z_0-9]+)?$ ?h=$1&output=true&format=true&data_type=$2&callback=$3 [L,NC,QSA]

为什么这不匹配的任何想法?我已经在服务器环境和http://htaccess.madewithlove.be/上对此进行了测试,但没有运气。

1 个答案:

答案 0 :(得分:0)

RewriteRule与查询不匹配,只是路径文件/目录名称。

使用RewriteCond %{QUERY_STRING}来处理查询。