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):
1 2 3 4 5 6 7 8 9 |
# BEGIN WordPress <IfModule mod_rewrite.c><br /> 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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.
ciao,
si non è una regola generale,
io di solito forzavo con 301 www o non www
mi chiedevo cosa ne pensavi anche per le prestazioni e lato seo dato che redirige lo stesso senza come lo voglio è penso rediriga anche i motori
e si, canonical è impostato senza