问题
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