使用.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 stringwp=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