0

次のような内容の.htaccessファイルを見ました

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

私が理解しているように、書き換え条件は、要求されたURLがゼロ以外のサイズのファイル、またはシンボリックリンクまたはディレクトリを対象としている場合、何もしないことを示しています。これは、によって行われ RewriteRule ^.*$ - [NC,L]ます。つまり、上記の条件が当てはまる場合は、そこで処理を停止します。それ以外の場合はを呼び出し/index.php、それはを使用して行われRewriteRule ^.*$ /index.php [NC,L]ます。

私の疑問は、

1.チュートリアル(ディープエンドを生き残る)で私は読んでいます:

つまり、URLがファイル(サイズがゼロより大きい)、ディレクトリ、またはシンボリックリンクを参照している場合。これにより、JavaScript、css、およびその他の非PHPファイルを、他の場所に集中してシンボリックリンクによってのみ参照されている場合でも直接提供できるようになります。

すべての.phpファイルはゼロ以外のサイズであるため、apacheはphpファイルと非phpファイルの違いをどのように知ることができますか?

2.要求されたURLは引数として/index.phpに渡されますか、それとも/index.phpのみを呼び出しますか?

4

1 に答える 1

2

要求されたファイル/ディレクトリ/シンボリックリンクが存在するかどうかをチェックするのはREQUEST_FILENAME条件です。あなたの質問に答える:

すべての.phpファイルはゼロ以外のサイズであるため、apacheはphpファイルと非phpファイルの違いをどのように知ることができますか?

Apacheは違いを知る必要はありません。アプリケーションのパブリックフォルダ内のファイルは、ファイルの種類に関係なく、そのまま提供されます。すべてのZendFrameworkファイル、およびアプリケーションコードはパブリックフォルダーの外にあります。

要求されたURLは引数として/index.phpに渡されますか、それとも/index.phpのみを呼び出しますか?

要求されたURLは、などの環境変数に引き続き存在する$_SERVER['REQUEST_URI']ため、ZF(およびほとんどのフレームワーク)はこれを使用して、アプリケーションのどの部分が要求を処理する必要があるかを判断します。

于 2012-09-17T16:02:45.810 に答える