.htaccess重写传递所有查询字符串

时间:2011-05-18 16:45:26

标签: php apache .htaccess mod-rewrite

目前我使用:

RewriteRule ^([^/\.]+)/?$ page.php?page=$1 [L]

当通过一个查询字符串时,哪个是好的。

但有没有办法让所有的查询串通过?即一页请求可能是:

domain.com/contact?course=23

,另一个可能是:

domain.com/contact?workshop=41

所以我需要知道查询字符串名称是什么,但一次只能传入一个

2 个答案:

答案 0 :(得分:37)

如果我正确理解您的问题,您只需将[QSA] (query string append) flag添加到RewriteRule

的末尾即可
RewriteRule ^([^/\.]+)/?$ page.php?page=$1 [L,QSA]

这将处理您已经完成的请求,并在末尾添加任何进一步的查询字符串参数。

答案 1 :(得分:1)

这就是我的工作。

RewriteRule ^((/?[^/]+)+/?)$ ?q=$1 [L]

现在,domain.com/之后的整个部分位于$_GET['q']中的index.php。例如。如果您请求domain.com/articles/12,则q包含articles/12。然后用例如琐碎的解析它explode('/', $_GET['q'])