La configurazione di default del CMS WordPress prevede un sistema di riscrittura degli indirizzi basato sull’utilizzo del file “.htaccess” (scritto con il punto iniziale). Vedremo ora come renderlo meno intrusivo e massimizzarne le prestazioni.
La seguente configurazione di “.htaccess” viene utilizzata nelle recenti versioni di WordPress (fino alla 3.0.x):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Questa serie di regole è molto inefficente in quanto, al caricamento di ogni file che compone la pagina web, esegue un ciclo di ricerca supplementare per verificare l’esistenza del file.
Il problema si complica, inoltre, nel caso in cui il proprio servizio di hosting preveda limitazioni di banda. Se tali limitazioni relative al numero di file caricati (mod_slotlimit), come ad esempio nel caso del provider italiano Tophost, si ottiene l’effetto di fare scattare il limite di soglia anche caricando una sola pagina web, in quanto tutti i suoi componenti (immagini, fogli di stile) vengono fatti passare attraverso l’interprete php e quindi trattati come fossero pagine web indipendenti. In breve, tutto questo porta al fatidico messaggio di errore:
Blocked by mod_slotlimit. More information about this error may be available in the server error log.
Suggeriamo quindi di sostituire il contenuto del file “.htaccess” con le righe seguenti:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
# if this request is for "/" or has already been rewritten to WP
RewriteCond $1 ^(index\.php)?$ [OR]
# or if request is for image, css, or js file
RewriteCond $1 \.(gif|jpe?g|png|css|js|ico)$ [NC,OR]
# or if URL resolves to existing file
RewriteCond %{REQUEST_FILENAME} -f [OR]
# or if URL resolves to existing directory
RewriteCond %{REQUEST_FILENAME} -d
# then skip the rewrite to WP
RewriteRule ^(.*)$ - [S=1]
# else rewrite the request to WP
RewriteRule . /index.php [L]
# END WordPress
I miglioramenti apportati sono i seguenti:
- il blocco di controllo <ifmodule> è rimosso per guadagnare velocità
- la riscrittura viene evitata se la pagina da caricare è la “index.php”, cioè la pagina iniziale
- la riscrittura viene evitata per i file statici di tipo immagine, javascript e css
Utilizzando le nuove regole si abbasserà notevolmente il tempo di caricamento della pagina, considerando che saranno evitati numerosi cicli di ricerca relativi al check di esistenza dei file statici, e si risolveranno gli eventuali problemi nel controllo di banda tramite mod_slotlimit.
fonte: http://www.whiletrue.it/