ex1-lab

Linux, CentOS, Mac OS X, Windows, 仮想化, Apache等のLinux中心に気になることをメモがわりに・・・

Rewrite(リダイレクト) 無限ループの回避方法

      2017/01/04 この記事は約2分で読むことができます。

概要

最近、Apacheでmod_rewriteを使いWEBサイトがあって、無限ループになってハマってしまいました
回避方法はネットでは[L]を追加する方法が紹介されていました

[L]を使用してループを止める

[L]のオプションを使用していると、それ以降の条件では比較しないと解釈になりリダイレクトが終了します

  1. 接続要求あったら、http://www.example.co.jp/」へリダイレクトする
  2. [L]の条件にマッチするので処理終了するのでループしない

上記のような流れです

[RewriteCond]を使用してループを止める

上記ではRewriteRuleを使用する方法を紹介しましたが、筆者の環境ではうまく動きませんでした。筆者の環境でループ止める事ができたのは、 [RewriteCond] を使用する方法です

[RewriteCond:書式]
RewriteCond テストする変数 パターン [フラグ]
フラグには[NC]もしくは[OR]を指定できます。フラグを二つ設定するにはカンマで区切ります。(例: [NC, OR]

[NC] - 大文字小文字を区別せずにパターンと一致するかどうかをテストします。
[OR] - いずれかのRewriteCondにあてはまる場合にRewriteRuleを適用します。[OR]を明示しない場合、自動でANDになります。

 - Linux