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>
無事にリダイレクトされないようになりました!!!
恐るべしスイス製アーミーナイフ。
今更ながら、同じような状況で困って検索していたら、こちらの記事を見つけました。
お蔭様で、RewriteCondの順番を入れ替えたら上手くいきました。
非常に嬉しかったので、せめて御礼をと思い、コメント致します。
ありがとうございました!
コメントありがとうございます。
お役に立てて良かったです!!
まさかそこか‥ と思える点ですよね。。。私もこれに気が付くまで苦労しました。。。。