使用.htaccess从一个PHP页面重定向到另一个包含两个变量的页面

使用.htaccess从一个PHP页面重定向到另一个包含两个变量的页面,php,.htaccess,redirect,Php,.htaccess,Redirect,我有一个简单的问题,但我找不到办法。我需要重定向或重写以下内容: http://mydomain.com/libro.php?isbn=9788493652470 为此: http://mydomain.com/busqueda.php?busqueda=medimecum 我已经试过了,但不起作用: Redirect 301 /libro.php?isbn=9788493652470 http://mydomain.com/busqueda.php?busqueda=medimecum

我有一个简单的问题,但我找不到办法。我需要重定向或重写以下内容:

http://mydomain.com/libro.php?isbn=9788493652470 
为此:

http://mydomain.com/busqueda.php?busqueda=medimecum
我已经试过了,但不起作用:

Redirect 301 /libro.php?isbn=9788493652470 http://mydomain.com/busqueda.php?busqueda=medimecum

直接的
重定向
不起作用。但是对查询字符串使用
RewriteCond
,效果会很好。这应该适用于您的示例:

RewriteEngine On
RewriteCond %{QUERY_STRING} isbn=9788493652470
RewriteRule ^libro.php http://mydomain.com/busqueda.php?busqueda=medimecum [L,R=301]
现在再看看你的问题,不清楚你是否想传递原始的查询字符串,对吗?所以这个URL:

http://mydomain.com/libro.php?isbn=9788493652470
http://mydomain.com/busqueda.php?busqueda=medimecum&isbn=9788493652470
将成为此URL:

http://mydomain.com/libro.php?isbn=9788493652470
http://mydomain.com/busqueda.php?busqueda=medimecum&isbn=9788493652470
但如果您想这样做,可以将(查询字符串追加)标志添加到该
重写规则中,如下所示:

RewriteEngine On
RewriteCond %{QUERY_STRING} isbn=9788493652470
RewriteRule ^libro\.php http://mydomain.com/busqueda.php?busqueda=medimecum [L,R=301,QSA]

这两个文件的可能副本共享整个头部部分,我也尝试了PHP解决方案“header()”,但它会循环。。。即使使用“if($\u GET=9788493652470)”也无法匹配
Redirect
指令中的查询字符串,请改用
mod_rewrite
规则。@anubhava完全正确。为查询字符串发布了带有
RewriteCond
的答案。在我的测试中效果很好。+1它应该可以工作,只要将正则表达式更改为
^libro\.php$
@anubhava谢谢!并注意到。但它似乎与
^libro.php
配合得很好。为什么要用
^libro\.php
来转义它呢?
^libro.php
可以工作,但它也会匹配
libro-php123
等。