/.htaccess(CakePHP解析 #2)

前回は「app/webroot/index.php」から学習をスタートしましたが、じゃぁ「index.php」や「app/index.php」どうなっているのかと言いますと.htaccessによってシカトされてますね。おそらくmod_rewriteが使えない場合の対策なのでしょうが、その場合の処理まで解析していてはキリがありません。今日は最上層にある/.htaccessの解析をします。

/.htaccess(app/.htaccessもほぼ同じ内容)

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

まずは、ですが、これはmod_rewriteモジュールが有効かどうか調べて、有効であれば中身の処理を実行するという意味です。

RewriteEngine on以下

次に中身の解説ですが、こちらの技林さんのサイトの解説が凄く分かりやすいです。この処理でapp/webroot/に飛ばしているわけですね。

mod_rewrite

正規表現は欠かせません

また、mod_rewriteを知る上で正規表現の知識は欠かせません。自分の正規表現入門お薦めサイトはこちらのサイトです。

サルにもわかる正規表現入門

更に正規表現を理解したい人はやはり「フクロウ本」を読むことをお奨めします。

詳説 正規表現 第3版

詳説 正規表現 第3版

  <div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">
    posted with <a href="http://www.amazlet.com/browse/ASIN/4873113598/studiokingdom-22/ref=nosim/" title="詳説 正規表現 第3版" target="_blank">amazlet</a> at 08.09.21
  </div>
</div>

<div class="amazlet-detail">
  Jeffrey E.F. Friedl <br />オライリージャパン <br />売り上げランキング: 32534
</div>

<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
  <div class="amazlet-review-average" style="margin-bottom:5px">
    おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5.0" />
  </div>

  <p>
    <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 正規表現を確実にマスターできる<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> DOSのコマンドのような簡単なものから</div> 

    <div class="amazlet-link" style="margin-top: 5px">
      <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113598/studiokingdom-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a>
    </div></div> 

    <div class="amazlet-footer" style="clear: left">
    </div></div> 

    <h3>
      [L]って何?
    </h3>

    <p>
      これまた、技林さんのサイトの解説が分かりやすいです。
    </p>

    <p>
      <a href="http://tech.bayashi.jp/archives/entry/techweb/2007/001981.html" target="_blank">mod_rewrite サンプル集</a>
    </p>

    <p>
      [L]を指定している所でマッチしたら、それ以降のマッチング処理をしないということですね。
    </p>

    <h3>
      (.*) app/webroot/$1だけで良くね?
    </h3>

    <p>
      と思って、ローカル環境で^$ app/webroot/を外して試してみましたが普通に動きました。うーん、でもやっぱ何かしらの理由があるんだろうな…。誰か分かる方いらっしゃいましたら教えてください(><) 次のエントリーでは「app/webroot/.htaccess」を解説したいと思います。
    </p>