RewriteEngine On
RewriteCond search.php
RewriteCond {$QUERYSTRING} category=restauran(.*)city=Montrea(.*)$
RewriteRule search.php.* http://www.mynewsite.fak/$1 [P]
我们的想法是将查询字符串中的category=restaurant
和city=Montreal
的任何调用重定向到http://www.mynewsite.fak,路径完整,例如:
myoldsite.fak/folderA/folderB/search.php?blah=blah...
转到
mynewsite.fak/folderA/folderB/search.php?blah=blah...
答案 0 :(得分: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]
答案 1 :(得分:0)
这似乎对我有用:
RewriteCond%{QUERY_STRING} category = restaurant(。*)& city = Montreal
RewriteRule ^ search.php $ http://www.fakesite/data/testing/search.php [P,QSA]
感谢newfurniturey。