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の実行ユーザー(起動ユーザー)を変更する方法

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

  2. Apache

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

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

  3. Apache

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

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

  4. Apache

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

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

  5. Apache

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

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

コメント

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

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

最近の記事

  1. expdpが「すでに使用されているオブジェクト名です」と失敗…
  2. VMware Server 1系(Linux)のバージョンを…
  3. 【NetApp】AutoSupportMailの宛先を変更す…
  4. Mattermostを開くと502エラーが表示される時
  5. 【CentOS 7+Firewalld】FTPサーバへパッシ…
PAGE TOP