Apache

  (最終更新日:2015.05.13)

RewriteCondが効かない?特定のディレクトリを除外する方法でつまずいたお話

CakePHPをトップディレクトリから利用しています。

http://********/ でアクセスする感じ

このとき、 http://********/pc/ へのアクセスは Rewrite させたくないなぁと思い、 htdocs/.htaccess の中に RewriteCond を指定したのですがどうにこうにも上手くいきませんでした。

<IfModule mod_rewrite.c>
   RewriteEngine  on
   RewriteCond    %{REQUEST_URI}  !(^/pc/)
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

なんでじゃぁぁぁ とクタクタになりかけたその時、こちらのサイトの一文がすごく参考に‥。
 .htaccessの書き方 (murashun.jp)

RewriteCondの処理順は、どうやら先に RewriteRule をマッチングで確認し、その後にその上に書かれている条件 RewriteCond のマッチングをして処理にすすむ仕様のようです。

つまり、

   RewriteCond    A  B
   RewriteRule    C  HOGEEEE

とかかれている場合は、まず条件 C にマッチして、かつ A が B にマッチする場合は HOGEEEE にぶっ飛ばす動きとなります。

これを踏まえ、先ほどの .htaccess を下記のように変更しました。

<IfModule mod_rewrite.c>
   RewriteEngine  on
   RewriteCond    %{REQUEST_URI}  !(^/pc/)
   RewriteRule    ^$ app/webroot/    [L]
   RewriteCond    %{REQUEST_URI}  !(^/pc/)
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

無事にリダイレクトされないようになりました!!!

恐るべしスイス製アーミーナイフ。

スポンサーリンク
スポンサーリンク

関連記事

  1. Apache

    【解決済】原因は単純ミス‥。Apache+OpenSSLで構築したけどHTTPSに接続できない時

    いや。もうあまりの単純ミスぶりに自分をぶん殴りたいところですが。。。…

  2. Apache

    Apacheでreloadとgracefulを試した動きのメモ

    Apacheにおける reload コマンドと graceful コマ…

  3. Apache

    Apache 2.4をソースからインストールする

    Apache 2.4系をソースでインストールする方法です。2.…

  4. Apache

    オレオレ証明書(自己証明書)を大急ぎで作る方法

    取り急ぎ1年間(365日)有効なオレオレ証明書を大急ぎ(最短作業)で作…

  5. Apache

    mod_rewriteでログ出力をして500エラーを調査する方法

    .htaccessでのmod_rewriteが原因で、Internal…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. RHELでphp mbstringをyumインストールする方…
  2. Red Hat Subscription Managerでプ…
  3. Oracleで統計情報を別のユーザー(スキーマ)に移行する方…
  4. 【CentOS 7】HISTIGNOREで指定してもhist…
  5. ColdFusion 2016をCentOS 7にインストー…
PAGE TOP