プロが教えるわが家の防犯対策術!

ので教えてください。

.htaccess:
SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteBase /zend23/kubo/public
RewriteCond %{REQUEST_FILENAME} -s [OR] #(1)
RewriteCond %{REQUEST_FILENAME} -l [OR] #(2)
RewriteCond %{REQUEST_FILENAME} -d #(3)
RewriteRule ^.*$ - [NC,L] #(4)
RewriteRule ^.*$ index.php [NC,L] #(5)

において
(1),(2),(3)はどういう意味でしょうか?
また
(4),(5)においてRewriteRuleは(5)だけだとまずいのでしょうか?

よろしくお願いします。

A 回答 (1件)

http://net-newbie.com/trans/mod_rewrite.html
mod_rewrite全般はここら辺を見ていただくとして

REQUEST_FILENAMEというのは、リクエストされたファイルの名前、ですね。
この例だと、URLが例えば、「http://example.com/zend23/kubo/public/aaa.php
だったとすると、REQUEST_FILENAMEは「aaa.php」ですね。
で、その後ろ
(1) -s [OR]
そのaaa.phpがファイルサイズを持つものか又は([OR]は文字通りor又は||)
(2) -l [OR]
そのaaa.phpがシンボリックリンクか又は
(3) -d
ディレクトリ名だった場合は、

(4) RewriteRule ^.*$ - [NC,L]
どんなファイル名でも、そのまま表示する

(5) RewriteRule ^.*$ index.php [NC,L]
上記(1)~(3)に適合しない場合はindex.phpを表示する

といった具合です。
(5)だけにしてしまうと、全ての実体のあるリソース(jpgとか画像や普通においてあるHTMLファイルとか)だろうが全てindex.phpにリダイレクトされてしまいます。

逆に(4)だけだった場合は、
http://example.com/zend23/kubo/public/
という指定でURLにアクセスされて且つ、index.phpが無指定の場合に自動的に表示されるファイル名として指定がされていなかった場合に、意図しないもの(index.htmlやApacheで設定した何らかの自動表示されるファイル名)にアクセスされてしまいます。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございました。
よくわかりました。

お礼日時:2009/10/09 11:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!