.htaccess rewrite pass all query strings through

喜你入骨 提交于 2019-12-28 14:55:24

问题


Currently I use:

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

Which is good for when passing one querystring through.

But is there a way just to pass all querystrings through? i.e. One page request might be:

domain.com/contact?course=23

and another may be:

domain.com/contact?workshop=41

So I need to know what the query string name is, but only ever one will be passed in at a time


回答1:


If I understand your question correctly, you can just add the [QSA] (query string append) flag to the end of your RewriteRule

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

This will process your request as you've already done, and add any further querystring params onto the end.




回答2:


This is what I do.

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

Now the whole part after domain.com/ is in $_GET['q'] in index.php. E.g. if you request domain.com/articles/12, q contains articles/12. It's then trivial parse it with e.g. explode('/', $_GET['q']).



来源:https://stackoverflow.com/questions/6048151/htaccess-rewrite-pass-all-query-strings-through

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!