1
RewriteEngine On

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

アイデアは、クエリ文字列を含むsearch.phpへの呼び出しをパスをそのままにしてhttp://www.mynewsite.fakにリダイレクトするcategory=restaurantことです。たとえば、次のようになりますcity=Montreal

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

に行く

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

2 に答える 2

1

私が気づいた3つのこと。

1つ目は、例でクエリ文字列変数のスペルを間違えたことです。する必要があります{$QUERY_STRING}。これで問題を解決できる場合がありますが、他にもいくつかの提案があります。

2つ目はRewriteCond、クエリ文字列のforが各値に対して貪欲な一致を実行していることです。たとえば、フィールドに具体的に入ることができるコンテンツに一致するように更新してみてください\w+

3番目は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 = レストラン(。*)&city=モントリオール

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

newfurnitureyに感謝します。

于 2012-08-22T17:23:15.763 に答える