2010-12-20 15 views
0

私は最近、EE2に更新した古いサイトのURLを束ねています。これらのURLは次のようになります。
http://www.example.com/old/path.asp?dir=Folder_NameURLのクエリ文字列パラメータを使用してURLをリダイレクト

これらのURLはにリダイレクトする必要があります。
http://www.example.com/new_path/folders/folder_name

ないすべてFolder_Name文字列がfolder_name URLセグメントと一致するので、これらは最も可能性の高い静的リダイレクトする必要があります。

は、私は、「例1」と呼ばれる新しいサイトのページにマップする「Example_One」と呼ばれる特定のフォルダについては、以下のルールを試してみました:

Redirect 301 /old/path.asp?dir=Example_One 
      http://www.example.com/new_path/folders/example1 

しかし、これは動作しません。リダイレクトする代わりに、私はhttp://www.example.com/old/path.asp?dir=Example_Oneが見つからないという404エラーが表示されるだけです。

EDIT:二次的な問題はここにまたは関連してもしなくてもよいあまりにもこれあります
:私はこのようになりますキャッチオールのルールを持っている:
はリダイレクト301 /old/path.asp http://www.example.com/new_path

ルールを使用すると、上記の最初のリクエストと同様のリクエストが
http://www.example.com/new_path?dir=Folder_Nameに転送され、404エラーが発生します。

答えて

0

mod_rewriteの正しい構文を見つけるためにちょっとGoogleを徹底的に調べなければなりませんでした。 - EEは、クエリ文字列内の1つのパラメータで404ingされる理由として、その問題は依然として未解決であるが、これはとして働く

RewriteCond %{QUERY_STRING} ^dir=Example_One$ 
RewriteRule ^/old/path\.asp$ /new_path/folders/example1? [R=301,L] 

これは、上記の問題の両方が修正されています。上記の例を使用して

その問題の回避策。

また、パラメータが毎回異なる値を持つ特定のページにURLをリダイレクトすることもできます。

リンク:http://www.example.com

http://www.example.com/?utm_source=xxx& .....(404をトリガー)
にリダイレクトする必要がありますこの一例は、(追跡クエリ文字列が404をトリガところ、このような状況で)追跡するGoogleのUTMのキャンペーンがあります
RewriteCond %{QUERY_STRING} ^utm_source= 
RewriteRule ^$ http://www.example.com? [R=301,L] 

注:これは、^ $で定義されているように、要求をホームページにリダイレクトするだけです。 utmリクエストを別のページにリダイレクトする場合は、そのRewriteRuleの最初の部分を変更する必要があります。

+0

他のクエリ文字列パラメータ(例:http://www.example.com/old/path.asp?dir=Example_One&a=b)があった場合、^ dir = Example_One $は機能しませんか? –

関連する問題