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

使用.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!

从现有页面重定向到另一页面时出现问题。 我有网址: p>

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

我想将其重定向到: p>

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

我试过了: p>

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

以及许多其他组合,但没有这样的组合 运气,任何帮助将不胜感激! p> div>

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