あなたの状態が次の場合:
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|png|css)$
次に、画像、アイコン、スタイル、およびJavaScriptのみがルーティングから除外されます。これは、静的なhtml、ディレクトリ、またはディレクトリインデックスにアクセスできないことを意味します。したがって、静的なhtmlページをどこかに配置し、index.phpを経由せずに提供したい場合。また、誤って画像、スクリプト、またはスタイルを間違った場所に配置してアクセスしようとすると(通常は404が表示されます)、index.phpを介してルーティングされず、デフォルトの404エラーが発生します。ページ。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
これらの条件は、既存のリソースを指すURIを除外します。したがって、画像、スクリプト、ディレクトリ、静的htmlなどをドキュメントルートの任意の場所にプロットすると、index.phpを経由せずにそこに移動できます。RewriteCond %{REQUEST_FILENAME} !-s
シンボリックリンクを指すURIを除外する条件も含まれる場合があります。これは通常、ルーティングを行うときに表示されるものであり、wordpressはこれを使用します。
ErrorDocument 404 /index.php
これは、mod_rewriteの外部で実行され、将来または必要に応じて追加の条件を課す方法がないことを除いて、基本的に前の条件と同じことを実行します。mod_rewriteの外部でルーティングを行うことの欠点は、mod_rewriteとコアディレクティブ(この場合はErrorDocument)がURIファイルマッピングパイプラインの異なる時間にURIで処理を行うことです。したがって、他のことを行うルールがある場合、それらは適用され、2つのディレクティブが互いに競合しているため、最終的にはindex.phpを介してルーティングされる可能性があります。書き換えルールがパイプラインのある時点で適用されるからといって、他のディレクティブがパイプラインの後半で適用されないという意味ではありません。これはルーティングを行うための悪い方法です。
次のようなものもあります:
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^.*$ index.php [L]
これは盲目的にすべてをルーティングします。javascript、画像、静的html、すべて。時々これは人々が望むものです。最終的に、これはあなたが望むものとあなたのindex.phpスクリプトが何をするかに依存するでしょう。404を処理しますか?(最初のルーティングルールで必要なもののように)、非静的リソースを処理するだけですか?(2番目のルールが行うことのように)、またはそれは文字通りすべてをキャッチし、すべてを実行します(上記のルールが行うこと)?
また、書き換えフラグは最初のルールと2番目のルールで異なることに注意してください。他のルールがある場合、これらは重要です。