/app/webroot/.htaccess(CakePHP解析 #3)

今回は「/app/webroot/.htaccess」を解析します。

ソースは下記のとおり。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    </IfModule>

RewriteCond

RewriteCondはURLをRewriteする条件になります。

「%{REQUEST_FILENAME}」は「要求したファイル名(フォルダ名)が」という意味。

URL指定で、「/app/webroot/aaa」ならば「aaa」がそれに当たります。

そして「!-d」は、この例であれば「aaa」というフォルダが存在するのであればRewriteしない。「!-f」はファイルが存在するのであればRewriteしないということになります。

この処理については、phaさんが自習室で詳しくまとめられています。

RewriteRuleをいろいろ試す会:RewriteCondを使う

QSAとは?

次にRewriteRule ^(.*)$ index.php?url=$1 [QSA,L]ですが、

URL書き換え部分は(.*)が$1に書き換わります。

「/app/webroot/aaa」でアクセスしたら、「/app/webroot/index.php?url=aaa」となります。

後にくっついている[QSA,L]の「QSA」の意味ですが、とみぞーノートさんのサイトに詳しくまとめられています。

mod_rewrite – QSAフラグ

次回は「cake/bootstrap.php」を解説したいと思います。