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 headers not foundでconfigureが失敗する時

    Apacheをソースからインストールする際に --enable-ssl…

  2. Apache

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

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

  3. Apache

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

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

  4. Apache

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

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

  5. Apache

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

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

  6. Apache

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

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

コメント

    • WEB学習中
    • 2018年 6月 24日

    今更ながら、同じような状況で困って検索していたら、こちらの記事を見つけました。
    お蔭様で、RewriteCondの順番を入れ替えたら上手くいきました。
    非常に嬉しかったので、せめて御礼をと思い、コメント致します。
    ありがとうございました!

      • おかしら
      • 2018年 6月 26日

      コメントありがとうございます。
      お役に立てて良かったです!!
      まさかそこか‥ と思える点ですよね。。。私もこれに気が付くまで苦労しました。。。。

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

最近の記事

  1. 【Apache】OpenSSL headers not fo…
  2. 【CentOS 7】yum updateがくっそ遅いときに試…
  3. Linux版のTomcat 9でWebアプリケーションマネー…
  4. CentOS 7でTomcat 9の起動スクリプトの作成と自…
  5. Warning: tomcat.service change…
PAGE TOP