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

2022-08-30 22:52:39

目前我使用:

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

这在传递一个查询字符串时很有用。

但是有没有办法传递所有查询字符串?即,一个页面请求可能是:

domain.com/contact?course=23

另一个可能是:

domain.com/contact?workshop=41

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


答案 1

如果我正确理解了您的问题,您只需将 [QSA](查询字符串追加)标志添加到您的末尾RewriteRule

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

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


答案 2

这就是我的工作。

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

现在,domain.com/ 之后的整个部分都在.例如,如果您请求 ,则包含 。然后,它平凡地解析它,例如.$_GET['q']index.phpdomain.com/articles/12qarticles/12explode('/', $_GET['q'])


推荐