Php 使用.htaccess将带有查询字符串的一个页面重定向到另一个页面
从现有页面重定向到另一页面时出现问题。我有网址:Php 使用.htaccess将带有查询字符串的一个页面重定向到另一个页面,php,.htaccess,redirect,Php,.htaccess,Redirect,从现有页面重定向到另一页面时出现问题。我有网址: http://www.thedomain.com/webpage-themission.php?wp=The%20Mission 我想把它重定向到: http://www.thedomain.com/webpage.php?wp=The%20Mission 我试过: RewriteEngine On RewriteRule ^/webpage-themission.php?wp=The%20Mission$ http://thedomain.
http://www.thedomain.com/webpage-themission.php?wp=The%20Mission
我想把它重定向到:
http://www.thedomain.com/webpage.php?wp=The%20Mission
我试过:
RewriteEngine On
RewriteRule ^/webpage-themission.php?wp=The%20Mission$ http://thedomain.com/webpage.php?wp=The%20Mission$1 [L,R=301]
和许多其他组合,但没有这样的运气,任何帮助将不胜感激 请将其添加到.htaccess文件中
Redirect 301 http://www.thedomain.com/webpage-themission.php?wp=The%20Mission http://www.thedomain.com/webpage.php?wp=The%20Mission
您不应该在重定向规则中包含查询字符串,因为它根本不会被计算 试试这个:
RewriteEngine On
RewriteRule ^/?webpage-themission\.php$ http://thedomain.com/webpage.php [L,R=301,QSA]
请注意:
- 请务必注意指定的
标志。这将产生将查询字符串QSA
附加到重定向URL的效果wp=%20Mission
- 我还对匹配规则中的
进行了转义,这样它就不会表现为通配符,并允许在类似/webpage的任务xphp
- 我将
放在初始反斜杠之后,通常在目录上下文(即.htaccess)中,不比较正斜杠,这意味着规则必须是?
。放置^webpage…
可以使规则在目录上下文和服务器上下文(即httpd.conf)中工作/?
QSA
标志时,查询字符串将与重写一起传递。你确定你已经为这个目录正确地指定了AllowOverride,这样就可以使用.htaccess
文件了吗?哦,不,我现在得到了一些东西,结果是%25从哪里来?抱歉,未看到您对答案进行了编辑。这就解释了困惑@AkiraDawson不幸的是,您遇到了双重编码问题,%
在重定向时被编码为%25
。实际上,您可能需要检查查询字符串并修复空格。查看此问题以获取帮助-最好的解决方案是避免将需要urlencoding的字符放入URI或查询字符串中。感谢您的帮助,我最终将[L,R=301,QSA]更改为[L,R=301,QSA,NE,N],重定向正在工作。我现在没有双重编码的问题。