Cum să modific fișierul .htaccess într-un anumit mod în WordPress?
Am învățat puțin despre WordPress Rewrite API – suficient cât să adaug o regulă de rescriere pentru un plugin. Pluginul funcționează dacă este instalat în rădăcină, dar am observat că dacă WordPress este instalat într-un subdirector, trebuie să fac următoarele modificări în fișierul .htaccess. Aș dori să știu cum să automatizez aceste modificări, dacă este posibil. De asemenea, există o a doua problemă. Dacă mergi la Setările Permalinks în WordPress, modificările mele personalizate sunt suprascrise (cu excepția regulii mele speciale care folosește WP Rewrite API). Așadar, am nevoie de ceva care să folosească WordPress Rewrite API, astfel încât să nu fie suprascrise.
Fișier .htaccess original
# ÎNCEPUT WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /mysubdir/
RewriteRule ^index\.php$ - [L]
# linia mea specială WP Rewrite API
RewriteRule ^special(.*)$ /mysubdir/wp-content/plugins/special/app/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /mysubdir/index.php [L]
</IfModule>
# SFÂRȘIT WordPress
Modificările pe care le-am făcut pentru ca pluginul să funcționeze într-un subdirector
# ÎNCEPUT WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /mysubdir/
RewriteRule ^index\.php$ - [L]
# linia mea specială WP Rewrite API
RewriteRule ^special(.*)$ /mysubdir/wp-content/plugins/special/app/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /mysubdir/index.php [L]
RewriteRule . index.php [L]
</IfModule>
# SFÂRȘIT WordPress

Dacă nu dorești ca WordPress să suprascrie modificările tale în fișierul .htaccess, asigură-te că scrii modificările în afara blocului de comentarii WordPress, adică fie înainte, fie după acest marcaj:
# BEGIN WordPress
...
# END WordPress
Consideră această zonă ca fiind teritoriul WordPress. Orice se află în acest bloc va fi suprascris de WordPress atunci când trebuie să facă modificări în .htaccess.
Iată ce poți face după blocul de comentarii WordPress:
# BEGIN WordPress
...
# END WordPress
<IfModule mod_rewrite.c>
# Scrie aici regulile tale de rescriere.
</IfModule>

Puteți folosi add_rewrite_rule() pentru a adăuga reguli în fișierul .htaccess
. Dacă adăugați aceste reguli pe init
(sau chiar înainte ca regulile să fie resetate), atunci de fiecare dată când regulile sunt resetate (adică când setările de legături permanente sunt salvate), acele reguli vor fi păstrate.
Rețineți, de obicei o rescriere transmisă la add_query_arg
este de forma:
'index.php?p=12&food=$matches[1]&variety=$matches[2]'
iar WordPress o gestionează intern și nu le adaugă în fișierul .htaccess
. Dar dacă prima parte nu este index.php?
, atunci este tratată ca o regulă de rescriere externă și adăugată în .htaccess
. Vezi sursa.
