使用.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
等。