4

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 this redirect with:

Redirect 301 /?page_id=617/ https://www.example.com/

After apply this change, nothing happened. The old URL doesn't redirect.

4

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 ^$ https://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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.