頑張らない!でも諦めない!必死にならずにええかげん

Google or AdMax Promotion(page)

Redirect Matchで指定文字数にマッチングリダイレクト

外部のブログなどからリダイレクトを行う際に、
YYYYMMDD形式を含むようなURLをWordPress形式の
YYYY/MM/DD/などのディレクトリ形式に
リダイレクトさせたい場合に利用するのが指定文字数の条件判定です。
ここでは条件判定に利用できるRedirect Matchパターン例の検証を行います。

 

Redirect Matchによる条件判定

パターンマッチする条件は以下の例でご紹介します。

パターン 要求URL 転送先URL
.* /n-redirectmatch/dot-asta/blog-date-20141127.html http://redirect.trce.info/num/static/
.{8} /n-redirectmatch/dot-8/blog-date-20141127.html http://redirect.trce.info/num/dot-8/
.{4}.{2}.{2} /n-redirectmatch/dot-422/blog-date-20141127.html http://redirect.trce.info/num/dot-422/
[0-9]{8} /n-redirectmatch/0to9-8/blog-date-20141127.html http://redirect.trce.info/num/0to9-4to8/
.{4,8} /n-redirectmatch/dot-4to8/blog-date-20141127.html http://redirect.trce.info/num/dot-4to8/
[0-9]{4,8} /n-redirectmatch/0to9-4to8/blog-date-20141127.html http://redirect.trce.info/num/0to9-4to8/
[0-9]{4}[0-9]{2}[0-9]{2} /n-redirectmatch/0to9-422/blog-date-20141127.html http://redirect.trce.info/num/0to9-4to8/

 

 

検証と.htaccess設定

以下の検証では、転送先URLは便宜上固定としています。

検証の最後には動的に変数化してURLを生成する例をご紹介しています。

 

URL固定によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

これは特に正規表現を利用せず、1対1対応でURL転送を行う例です。

  この指定によって以下のように解釈されます。

説明

RedirectMatch 302 /blog-date-20141127\.html http://redirect.trce.info/num/static/2014/11/27/    

この場合、日付に当たる「20141127」部分が「20141127」と

一致した場合のみに転送が行われる指定を行っています。     

 

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。  

 

「.*」によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

 

この指定によって以下のように解釈されます。

 

説明

RedirectMatch 302 /blog-date-.*\.html http://redirect.trce.info/num/dot-asta/2014/11/27/

この「.*」による条件指定は「任意の1文字+0回以上の繰り返し」を示しています。

よって、日付部分が条件に該当しています。

http://n-redirectmatch.trce.info/dot-asta/blog-date-20141127.html

尚「0回以上の任意の1文字」は空文字でも含まれますので、以下も対象になります。

http://n-redirectmatch.trce.info/dot-asta/blog-date-.html

http://n-redirectmatch.trce.info/dot-asta/blog-date-abcdefghijklmnopqrstuvwxyz.html

 

 

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。

 

その他の記述例

●RewriteCond ●RewriteRule

 

 

「.{8}」によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

  この指定によって以下のように解釈されます。  

説明

RedirectMatch 302 /blog-date-.{8}\.html http://redirect.trce.info/num/dot-8/2014/11/27/       

この「.{8}」は「*」とは異なって、一致する回数分の繰り返しを示しています。

その為「任意の1文字+8回繰り返し」を示しています。

要は8文字(8byte)が挿入された場合のみが該当します。YYYYMMDD=8文字(8byte)

http://n-redirectmatch.trce.info/dot-8/blog-date-20141127.html  

尚、任意の8文字ですので以下のようなパターンでもマッチします。

http://n-redirectmatch.trce.info/dot-8/blog-date-12345678.html

http://n-redirectmatch.trce.info/dot-8/blog-date-redirect.html        

 

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。  

 

その他の記述例

●RewriteCond ●RewriteRule

 

 

「.{4}.{2}.{2}」によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

 

この指定によって以下のように解釈されます。

 

説明

RedirectMatch 302 /blog-date-.{4}.{2}.{2}\.html http://redirect.trce.info/num/dot-422/2014/11/27/

この「.{4}.{2}.{2}」は「.{8}」を細かな文字数のフォーマットにしているだけです。
判定条件は同じになりますが、このような記述方法を利用することで、
以下のように変数化する場合に利用できます。

RedirectMatch 302 /blog-date-(.{4})(.{2})(.{2})\.html http://redirect.trce.info/num/dot-422/$1/$2/$3/

この場合も「任意の1文字+8回繰り返し」を示しています。

 

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。

 

その他の記述例

●RewriteCond ●RewriteRule

 

 

「[0-9]{8}」によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

  この指定によって以下のように解釈されます。  

説明

RedirectMatch 302 /blog-date-[0-9]{8}\.html http://redirect.trce.info/num/0to9-8/2014/11/27/     

この「[0-9]{8}」は「.{8}」の条件判定で「任意の1文字」を「0から9の数字」に限定します。

かつ、文字数を8文字(8byte)としています。

http://n-redirectmatch.trce.info/0to9-8/blog-date-20141127.html    

以下のような場合も同じように転送されます。

http://n-redirectmatch.trce.info/0to9-8/blog-date-12345678.html

 

しかし、数字ではないこの場合は転送されません。

http://n-redirectmatch.trce.info/0to9-8/blog-date-redirect.html (転送不可404表示)

    

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。

 

その他の記述例

●RewriteCond ●RewriteRule

 

 

「.{4,8}」によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

 

この指定によって以下のように解釈されます。

 

説明

RedirectMatch 302 /blog-date-.{4,8}\.html http://redirect.trce.info/num/dot-4to8/2014/11/27/

この「.{4,8}」は「任意の1文字」を「4~8文字(4-8byte)」に限定しています。

http://n-redirectmatch.trce.info/dot-4to8/blog-date-20141127.html

 

この場合は以下のようなパターンでも転送されます。

http://n-redirectmatch.trce.info/dot-4to8/blog-date-201411.html

http://n-redirectmatch.trce.info/dot-4to8/blog-date-2014.html

http://n-redirectmatch.trce.info/dot-4to8/blog-date-year.html

http://n-redirectmatch.trce.info/dot-4to8/blog-date-newyear.html

 

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。

 

その他の記述例

●RewriteCond ●RewriteRule

 

 

「[0-9]{4-8}」によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

  この指定によって以下のように解釈されます。  

説明

RedirectMatch 302 /blog-date-[0-9]{4-8}\.html http://redirect.trce.info/num/0to9-4to8/2014/11/27/  

この「[0-9]{4,8}」は「任意の1文字」を「4~8文字(4-8byte)」に限定し、

かつ「0~9の数字」のみに限定しています。

http://n-redirectmatch.trce.info/0to9-4to8/blog-date-20141127.html    

この場合も以下のようなパターンでも転送されます。

http://n-redirectmatch.trce.info/0to9-4to8/blog-date-201411.html

http://n-redirectmatch.trce.info/0to9-4to8/blog-date-2014.html    

 

しかし数字以外では転送されません。

http://n-redirectmatch.trce.info/0to9-4to8/blog-date-year.html (転送不可404)

http://n-redirectmatch.trce.info/0to9-4to8/blog-date-newyear.html (転送不可404)

     

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。  

   

 

 その他の記述例

●RewriteCond ●RewriteRule

 

 

「[0-9]{4}[0-9]{2}[0-9]{2}」によるマッチング

一覧へ戻る

.htaccessには以下のように記述しています。

 

この指定によって以下のように解釈されます。

 

説明

RedirectMatch 302 /blog-date-[0-9]{4}[0-9]{2}[0-9]{2}\.html http://redirect.trce.info/num/dot-422/2014/11/27/

この「[0-9]{4}[0-9]{2}[0-9]{2}」は「.{4}.{2}.{2}」の条件を
さらに「0~9の数字」のみに限定しています。

この場合、4+2+2桁の数字になりますので、8文字(8byte)に制限されています。

http://n-redirectmatch.trce.info/0to9-422/blog-date-20141127.html

 

このパターンを利用すると、後述する実例のように利用ができます。

 

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。

 

その他の記述例

●RewriteCond ●RewriteRule

 

 

実例と.htaccess設定

一覧へ戻る

.htaccessには以下のように記述しています。

 

この指定によって以下のように解釈されます。

 

説明

RedirectMatch 302 /blog-date-([0-9]{4})([0-9]{2})([0-9]{2})\.html http://redirect.trce.info/num/solution/$1/$2/$3/

この「[0-9]{4}[0-9]{2}[0-9]{2}」を実例で紹介すると、
それぞれを括弧で囲み「([0-9]{4})([0-9]{2})([0-9]{2})」指定することで、

置換文字列へそれぞれの数字を引き継がせることができます。

これによって、

http://n-redirectmatch.trce.info/solution/blog-date-20141127.html へのアクセス要求が、

http://redirect.trce.info/num/solution/2014/11/27/ へと転送されることになります。

 

サンプルではこの日付のみですが、
要求された日付によって、転送先のURLを動的にすることが可能です。

 

転送と動作確認

URLにアクセスすると、転送先に正しく転送されるのが確認できます。

 

プロモーション(btm)

Google or AdMax Promotion (it)

さいごに

こうしてみていくと、Redirect Matchだけでも結構細やかなURL転送が利用できます。

CMSなどが動的に生成してくるURLへの転送などでは、
上記のような年月日別アーカイブのURL転送を行う際には必須の記述方法になります。

 

ただ、Redirect Matchも万能ではありません。

Redirect MatchではURL転送をうまく行えないでしょう。

そうした場合には、mod_rewriteを活用して処理を行います。

 


公開日:

*本ページ内に記載されされた各社ブランド、サービス名、商標、登録商標については、
各社ブランドのロゴや商標等に関する帰属についてをご確認ください


最後までお読みいただきありがとうございました。
アルゴリズン

役に立ったと思っていただけたら、以下からシェア頂けたら幸いです^^

QRコードからもこのURLを開けます。

ページ
すべて展開 | すべて省略

アイキャッチ画像に利用させて頂いております、各社ブランドのロゴやシンボルに関しては、
各社ブランドのロゴや商標等に関する帰属についてをご確認頂けますようお願い致します。
ロゴの使用等に関する苦情・ご意見等がございましたら管理者までご連絡ください。

Rakuten Promotion