2011-05-18 61 views
13

目前我使用:的.htaccess重写通过所有的查询字符串通过

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

这是很好的通过传递一个查询字符串时。

但是,有没有办法只是通过所有querystrings?即一个页面请求可能是:

domain.com/contact?course=23 

,另一个可能是:

domain.com/contact?workshop=41 

所以,我需要知道的查询字符串名称是什么,但始终只将在同一时间

传递中

回答

28

如果我正确理解你的问题,你可以添加到[QSA] (query string append) flagRewriteRule

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

这将处理您的请求,因为你已经做了终点,并添加任何进一步的查询字符串PARAMS到结束。

+0

谢谢 - 这工作太棒了! :-) – Shane 2011-05-18 17:03:21

1

这就是我所做的。

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

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

+0

谢谢 - 很接近,但更喜欢@迈克尔的方法... – Shane 2011-05-18 17:03:52