1
RewriteEngine On

RewriteCond search.php
RewriteCond {$QUERYSTRING} category=restauran(.*)city=Montrea(.*)$ 
RewriteRule search.php.* http://www.mynewsite.fak/$1 [P]

这个想法是将任何对 search.php 的调用重定向到带有category=restaurantcity=Montreal在查询字符串中的http://www.mynewsite.fak并且路径完整,例如:

myoldsite.fak/folderA/folderB/search.php?blah=blah...

mynewsite.fak/folderA/folderB/search.php?blah=blah...
4

2 回答 2

1

我注意到的三件事。

首先是,您在示例中拼错了查询字符串变量。应该是{$QUERY_STRING}。这可能足以解决问题,但还有其他一些建议。

第二个是您RewriteCond的查询字符串正在对每个值进行贪婪匹配。尝试更新以匹配可以专门进入字段的内容,\w+例如。

三是RewriteRule自身。您可以从当前页面名称中删除.*,并将规则更改为更合适的名称,例如[R=301, L]. 这将导致规则使用 HTTP 301(永久重定向)标头“重定向”,并L声明它是最后应用的规则。

总而言之,这应该(可能)起作用:

RewriteEngine On

RewriteCond {$QUERY_STRING} category=(\w+)&city=(\w+)$
RewriteRule ^search.php$ http://www.mynewsite.fak/$1 [R=301, L]
于 2012-08-22T16:09:06.983 回答
0

这似乎对我有用:

RewriteCond %{QUERY_STRING} category=restaurant(.*)&city=Montreal

RewriteRule ^search.php$ http://www.fakesite/data/testing/search.php [P,QSA]

谢谢新家具。

于 2012-08-22T17:23:15.763 回答