2016-10-19 2 views
0

状況:ウェブサイトの多くのページが「レベルアップ」されました。今は亡き/すべてのウィジェット/カテゴリが含まれ、多くの時代遅れのリンク:.htaccess regex redirects - キーワードを削除するには?

www.example.com/all-widgets/red-widgets/widget001 は今 www.example.com/red-widgets/widget001

問題です。

正規表現の構文はになります。をURLから削除しますか?言い換えれば

、「着信URLがこのキーワードが含まれている場合は、だけこのキーワードを削除しますが、完全なURLの残りの部分を残します」。


フォローアップ:それは別の場所URLで発生する可能性がありますので、キーワードは正確な、1回の試合でなければならない状況があるかもしれません。言い換えれば

、それはこのような入ってくるURLが存在するかもしれないという可能性です:

www.example.com/all-widgets/red-widgets/widget074-compatible-with-all-widgets

私は(カテゴリを修正するために、「すべてのウィジェット」の唯一の第一発生を削除する必要がありますマイグレーションの問題)、残りの部分はそのままにしてください(実際の製品/ブログのURLを壊さないように)。

答えて

0

は、このいずれかで試してみてください:

RewriteRule /all-widgets/(.*) $1 [L, R=301] 
0

次の正規表現は、あなたのURL ^all-widgets/(.+)$から先頭all-widgetsを分離します。あなたは、あなたがルートに残りをする方法に基づいて書き換えルールを追加することができます。 例えば、あなたがURL内のどこからでも最初のインスタンスにall-widgetsを削除するには、このルールを使用することができます

RewriteRule ^all-widgets/(.+)$ $1 
+0

要求:そう、構文 'するRewriteRule ^(すべてのウィジェット\ /)(。+)$ $ 2'は' www.example.com/all-widgets/redを書き換えます-widgets/widget001'を 'www.example.com/red-widgets/widget001'に変更しますか?それとも何かを追加する必要がありますか? – TomJones999

+0

私の答えは少し更新されました。チェックしてください。はい、あなたの言葉のようにあなたのURLを書き換えます。 Webサーバーに新しいパスが存在する場合は、何も追加しないでください。ただし、新しいURLにリダイレクトされることはないため、ユーザーには古いURLが表示されます。 –

+0

URLが 'all-widgets'で始まっていない場合はうまくいきません。 – anubhava

0

。また、URLがall-widgetsで始まらない場合も対応します。明確化のため

RewriteEngin On 
RewriteBase/

RewriteRule ^(?:|(.*?)/)all-widgets(/.*|)$ $1$2 [L,R=301,NE,NC] 

RegEx Demo

関連する問題