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

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

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

  3. Apache

    Apacheの実行ユーザー(起動ユーザー)を変更する方法

    Apacheを起動しているユーザーを変更するには httpd.conf…

  4. Apache

    【凡ミス】Apache2.2系でAliasを指定したら403エラーが出た原因

    Apache2.2.23を使用。下記のようにAlias設定を入…

  5. Apache

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

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

  6. Apache

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

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

コメント

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

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

最近の記事

  1. 【Oracle】統計情報のバックアップとリカバリの方法
  2. 【Oracle】統計情報をCronで手動更新する為のスクリプ…
  3. 【PostgreSQL】文字コードを指定したcreatedb…
  4. 【Mackerel】ホスト毎のメトリック数の確認方法
  5. 【CentOS 7】nkfをyumでインストールする方法
PAGE TOP