: Redirect 301 directive for Apache has no effect for URL with query string I have this old link http://www.example.com/?page_id=617/ that I want to redirect to the home page. I've tried to implement
I have this old link www.example.com/?page_id=617/ that I want to redirect to the home page. I've tried to implement this redirect with:
Redirect 301 /?page_id=617/ www.example.com/
After apply this change, nothing happened. The old URL doesn't redirect.
More posts by @Si4351233
1 Comments
Sorted by latest first Latest Oldest Best
You can't match the query string with a mod_alias Redirect. You need to use a mod_rewrite RewriteRule directive instead. And match against the QUERY_STRING server variable in a RewriteCond directive.
Try the following instead, near the top of your .htaccess file:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^page_id=617/$
RewriteRule ^$ www.example.com/? [R=302,L]
Note that this matches the exact query string ?page_id=617/. Change the pattern to ^page_id=617 to match a query string that simply starts ?page_id=617.
Change the 302 to 301 only when you are sure it's working OK. (To avoid erroneous redirects being cached by the browser.)
The ? on the end of the RewriteRule substitution is required to removed the query string from the request (otherwise this gets passed through to the target URL). On Apache 2.4+ you can use the QSD flag instead.
Terms of Use Create Support ticket Your support tickets Stock Market News! © vmapp.org2024 All Rights reserved.