Mobile app version of vmapp.org
Login or Join
Si4351233

: 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

@Si4351233

Posted in: #301Redirect #Htaccess #Redirects

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.

10.01% popularity Vote Up Vote Down


Login to follow query

More posts by @Si4351233

1 Comments

Sorted by latest first Latest Oldest Best

 

@Ogunnowo487

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.

10% popularity Vote Up Vote Down


Back to top | Use Dark Theme