web-dev-qa-db-ja.com

プラグインを使ってデフォルトのWordPress .htaccessを変更する

私は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ブロックを追加しています。

1
terresquall

# 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です。

0
MrWhite