Изменение стандартного WordPress.htaccess с помощью плагина
Я разрабатываю плагин WordPress, который изменяет стандартный файл WordPress.htaccess в папке webroot. В настоящее время я вводю свой код внутри блока # 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. Я добавляю этот блок .htaccess, потому что хочу изменить некоторые части .css и файлы .js с PHP, прежде чем я их выведу.
1 answers
Вам определенно не следует изменять блок # BEGIN WordPress
, так как это, скорее всего, будет переопределено самим WordPress.
Вы должны создать новый раздел перед фронт-контроллером WordPress. Это будет работать так же хорошо, и директивы будут разделены.
Нет необходимости использовать оболочку <IfModule mod_rewrite.c>
, на самом деле вы не должны использовать оболочку в этом случае, так как ваш плагин, по-видимому, зависит от включения mod_rewrite. Ваш плагин будет не работает корректно, если mod_rewrite недоступен, поэтому вы не должны "молча завершать работу", если это не так.
В стороне: Также нет необходимости повторять директивы RewriteEngine
и RewriteBase
. Если вы вручную кодируете файл .htaccess
, вы не будете их дублировать. Однако, если вы вводите этот код программно, то вам, вероятно, нужно - чтобы быть уверенным. (Несколько директив RewriteEngine
и RewriteBase
строго не поддерживаются. Последний экземпляр в любом данном контексте выигрывает и управляет всем файлом. Например, если вы разместите RewriteEngine Off
в качестве самой последней директивы в файле .htaccess
, то это будет Off
для всего файла, несмотря на наличие более ранних директив RewriteEngine On
.)