使用.htaccess将带有查询字符串的一个页面重定向到另一个页面

having issues redirecting from an existing page to another page. I have the URL:

http://www.thedomain.com/webpage-themission.php?wp=The%20Mission

and I want to redirect it to:

http://www.thedomain.com/webpage.php?wp=The%20Mission

I have tried:

RewriteEngine On
RewriteRule ^/webpage-themission.php?wp=The%20Mission$ http://thedomain.com/webpage.php?wp=The%20Mission$1 [L,R=301]

and many other combinations but no such luck, any help would be greatly appreciated!

You should not include the query string in the redirect rule, as it is not evaluated at all.

Try this:

RewriteEngine On
RewriteRule ^/?webpage-themission\.php$ http://thedomain.com/webpage.php [L,R=301,QSA]

A few notes:

  • It is important to note the QSA flag that is specified. This will have the effect of appending the query string wp=The%20Mission to the redirected URL.
  • I also escaped the . in the matching rule so that it does not behave as a wildcard and allow a redirect on something like /webpage-themissionXphp
  • I put the ? after the initial backslash, as typically in directory context (i.e. .htaccess) the forward slash is not compared, meaning that the rule would need to be ^webpage.... Putting /? makes the rule work in both the directory context and the server context (i.e. httpd.conf).

Please add this to your .htaccess file

Redirect 301 http://www.thedomain.com/webpage-themission.php?wp=The%20Mission http://www.thedomain.com/webpage.php?wp=The%20Mission