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

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

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

  2. Apache

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

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

  3. Apache

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

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

  4. Apache

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

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

  5. Apache

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

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

  6. Apache

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

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

コメント

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

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

最近の記事

  1. 【fdisk】パーティションが「範囲外の値です。」と作成でき…
  2. ServerView RAID Manager Linuxの…
  3. 【NetApp】rootユーザーのパスワードをコンソールから…
  4. 【syslog-ng】他サーバなどからのログが受信できない。…
  5. 【Mattermost】ユーザー管理をする方法
PAGE TOP