web-dev-qa-db-fra.com

Modification du fichier WordPress .htaccess par défaut avec un plugin

Je développe un plugin WordPress qui modifie le fichier .htaccess standard de WordPress dans le dossier webroot. Actuellement, j'injecte mon code dans le bloc # BEGIN WordPress, comme suit:

# 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>

Est-ce une bonne pratique? Ou devrais-je créer un nouveau bloc <IfModule mod_rewrite.c> pour ce code?

Aussi, y a-t-il autre chose que je devrais prendre en compte lors de la création de plugins qui modifient .htaccess?

P.S. J'ajoute ce bloc .htaccess parce que je veux modifier certaines parties des fichiers .css et .js avec PHP avant de les sortir.

1
terresquall

Vous ne devriez certainement pas modifier le bloc # BEGIN WordPress, car cela risquerait d'être remplacé par WordPress lui-même.

Vous devriez créer une nouvelle section avant le contrôleur frontal WordPress. Cela fonctionnera tout aussi bien et maintiendra les directives séparées.

Il n’est pas nécessaire d’utiliser un wrapper <IfModule mod_rewrite.c>, en fait vous ne devriez pas utiliser un wrapper dans ce cas, car votre plugin semblerait dépendre de l’activation de mod_rewrite. Votre plugin ne fonctionnera pas correctement si mod_rewrite n'est pas disponible, vous ne devriez donc pas "échouer en silence" si ce n'est pas le cas.

A part: Il n'est également pas nécessaire de répéter les directives RewriteEngine et RewriteBase. Si vous codez à la main le fichier .htaccess, vous ne les dupliqueriez pas. Cependant, si vous injectez ce code par programme, vous devrez probablement - pour être sûr. (Plusieurs directives RewriteEngine et RewriteBase ne sont pas strictement prises en charge. La dernière instance dans un contexte donné context gagne et contrôle le fichier entier. Par exemple, si vous placez RewriteEngine Off comme toute dernière directive dans le fichier .htaccess, la valeur est Off pour l'ensemble du fichier, malgré l'existence de directives RewriteEngine On antérieures.)

0
MrWhite