私はwebrootフォルダの標準のWordPress .htaccessファイルを修正するWordPressプラグインを開発しています。現在、私は自分のコードを# BEGIN WordPress
ブロック内に挿入しています。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN This is my block
RewriteCond %{REQUEST_URI} \.(css|js)$
RewriteRule . index.php [L]
# END This is my block
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
これはベストプラクティスですか?それとも、このコード用に新しい<IfModule mod_rewrite.c>
ブロックを作成する必要がありますか?
また、.htaccessを変更するプラグインを作成するときに注意すべきことが他にありますか?
P.S出力する前に.cssファイルと.jsファイルの一部をPHPで変更する必要があるため、この.htaccessブロックを追加しています。
# BEGIN WordPress
ブロックはWordPress自体によって上書きされる可能性が高いため、変更しないでください。
新しいセクションbeforeWordPressフロントコントローラーを作成する必要があります。これも同様に機能し、ディレクティブを分離します。
<IfModule mod_rewrite.c>
ラッパーを使用する必要はありません。実際、プラグインは有効になっているmod_rewriteに依存しているように見えるため、このインスタンスでshould notを使用します。 mod_rewriteが利用できない場合、プラグインは正しく機能しません。利用できない場合、「黙って失敗する」べきではありません。
Aside:RewriteEngine
およびRewriteBase
ディレクティブを繰り返す必要もありません。 .htaccess
ファイルを手動でコーディングしている場合、それらを複製することはありません。ただし、このコードをプログラムで注入する場合は、おそらく確認する必要があります。 (複数のRewriteEngine
およびRewriteBase
ディレクティブは厳密にはサポートされていません。特定のcontextの最後のインスタンスが勝ってファイル全体を制御します。たとえば、RewriteEngine Off
を.htaccess
ファイル内の最後のディレクティブは、以前のRewriteEngine On
ディレクティブがあるにもかかわらず、ファイル全体でOff
です。