问题
Any request for /
that has a query string is causing a 404 to be triggered. I've found that if I add a /shop/
before the query string, it gets redirected internally and no 404 is triggered.
I need a general mod_rewrite rule that will take a URL in the form of:
http://www.example.com/?foo=bar
and redirect it to:
http://www.example.com/shop/?foo=bar
where the query string (could be anything) is preserved.
回答1:
This will redirect (URL will change) all hits into ROOT (e.g. http://www.example.com/
) that has query string into http://www.example.com/shop/
.
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^$ http://www.example.com/shop/ [QSA,R,L]
This will rewrite internally (URL will stay the same in browser) all hits into ROOT (e.g. http://www.example.com/
) that has query string into http://www.example.com/shop/
.
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^$ /shop/ [QSA,L]
来源:https://stackoverflow.com/questions/6527156/redirect-to-a-directory-preserving-the-query-string