在htaccess中重写url后重定向带问号的url

时间:2013-12-15 12:10:09

标签: regex apache .htaccess mod-rewrite url-rewriting

我正在寻找一种模式,可以在重写网址后进行正确的重定向

test/14/optional-string-not-important?edit=ok

应该重定向到

test.php?id=14&edit=ok

...在网址重写后, 我制定了一条规则:

RewriteRule    ^test/([0-9]+)(/([a-z0-9,\.-]*))?(\?(.*))?$    test.php?id=$1&$5

但是(\?(。*))中的问号不想逃避我不知道为什么...... 任何的想法? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

您无法与QUERY_STRING中的RewriteRule匹配。由于您只是尝试保留现有的查询字符串,因此您只需使用QSA标志即可。 QSA(查询字符串追加)标志在添加新查询参数时保留现有查询参数。

请尝试使用此规则:

RewriteRule ^test/([0-9]+)(/|$) test.php?id=$1 [L,NC,QSA]