2016-05-13 8 views
1

私は電子メールニュースレターのアーカイブを持っています。オリジナルのソースコードはで画像を指す:Regexは新しい画像の場所を指しますか?

http://example.com/email/2015-06-16/weekend.jpg

...しかし、今、実際の画像ファイルがに存在するアーカイブに移動するので:

http://example.com/email/archive/2015/2015-06-16/weekend.jpg

私の考えがにありますhtaccess、regex、ApacheのRewriteEngineを使用して、イメージリクエストの途中に「archive/2015 /」を挿入します。しかし、私は正規表現ではあまりよくありません。私は必要なものを記述することができますが、それを実現するための構文はわかりません。

http://example.com/email/[someyear]-06-16/weekend.jpgが要求され、

"/メール" の後に "アーカイブ/ [someyear] /" を挿入して助けてください?

答えて

0

これに正規表現は必要ありません。 mod_rewriteを使用して

Redirect 301 /email/ http://example.com/email/archive/2015/ 
+0

'email /アーカイブ/ 2015'に' email'する必要がありますか? –

0

あなたはこれを行うことができ、単純なリダイレクトを試してみてください。

RewriteRule ^email/((\d{4})-\d{2}.+) /email/archive/$2/$1 [R=302,L] 

をここでは、我々はキャプチャは、次のとおりです。

  1. 2015{4}がある$2、として(\d{4})を使用して捕捉する桁数
  2. 06.+
  3. 上記の3つの点

を包むparenthisesとemail/後のすべてで06\d{2}(我々は点以下4でそれを含めているとして、これをキャプチャする必要はありません)

  • すべてを使用して上記のポイント1から$2を取得し、ポイント4から$1を取得して戻します。ポイント2を確認して、正しいフォーマットを確認しています。私たちは厳格である必要はありません)。

    これは基本的には単なるショートカットです。これを次のように(理解を容易にするため)に拡張することができます:あなたは満足している

    RewriteRule ^email/(\d{4})-(\d{2})-(\d{2})/(.+) /email/archive/$1/$1-$2-$3/$4 [R=302,L] 
    

    たら、リダイレクトをキャッシュする301302を変更します。

  • 関連する問題