2017-02-07 3 views
1

状況:オンラインストアの一連の製品の名前が変更された後、新しい名前と一致するようにURLを変更する必要がありました。リダイレクトは、古いURLと新しいURLの変換を処理するように設定されていました。.htaccessのリダイレクト - 構文なし - 効果なし

古いURLには、さまざまな場所にこれらのモデル名が含まれる可能性があるため、「キーワード」アプローチが採用されました。つまり、「THIS_STRINGが、要求されたURLのどこかで発生した場合、パスに関係なく、この新しいURLにリダイレクトします。古いモデル名と新しいモデル名が異なるため

いくつかのリダイレクトは、仕事:

RewriteRule ^.*(CC88SPECIAL).*$ http://www.example.com/widgets-DD99EXTREME [L,NC,R=301] 

これが適切に新しいURLに「CC88SPECIAL」を含むすべての要求をリダイレクトします。

問題は、同じ構文は、新しい名前古い名前が含まれてモデルに適用することができませんでしたが、すなわちAA55COMPLETEはAA55COMPLETE100になりました:「キーワード」の後に

RewriteRule ^.*(AA55COMPLETE).*$ http://www.example.com/widgets-AA55COMPLETE100 [L,NC,R=301] 

アスタリスクがループを生成します。

だから形式に変更された:

RewriteRule ^.*(AA55COMPLETE).$ http://www.example.com/widgets-AA55COMPLETE100 [L,NC,R=301] 

問題があり、これは効果がありません。ループなし、エラーなし、503なし、URLはまったく変更されません。

私は間違っていますが、正しくするには正しい構文は何ですか?私。要求されたURLの中の特定の文字列と一致する場合、の位置にありますか?

答えて

0

最後のルールは、末尾がであるため、要求されたURI/AA55COMPLETEと一致しないため、失敗しました。正規表現パターンの正規表現のドットは、1つ以上の文字と一致するように、/AA55COMPLETEAの代わりに一致させることを意味します。 /AA55COMPLETE100/AA55COMPLETEをリダイレクトするには、

RewriteEngine on 

RewriteRule ^AA55COMPLETE/?$ /AA55COMPLETE100 [NC,L,R] 
を使用することができます