Regole di Rewrite utili per siti web

ATTENZIONE: questo articolo è stato scritto oltre un anno fa, ed i contenuti potrebbero non essere più validi o compatibili. Sei pregato di tenerne conto, e se hai informazioni in merito di segnalarmele, grazie.

permalinkAbbiamo già incrociato i RewriteRule per i permalink di WordPress, quando si trattava di capire qual’era l’URL più utile e amichevole da utilizzare per un blog gestito con il noto CMS.

Questo promemoria riguarda invece gli utilizzi più frequenti delle regole di RewriteRule su un sito web, indipendentemente dal fatto che si utilizzi un CMS o meno, l’unica condizione è di utilizzare Apache e di avere il modulo Rewrite attivo (lo è di default).

Le regole di Rewrite possono essere scritte nel file di configurazione di Apache (sconsigliabile), nel file di configurazione del virtualhost (già meglio ma non il massimo), oppure in un file .htaccess situato nella directory principale del sito, soluzione da preferire per praticità.
Se non esiste, creiamo il file di testo .htaccess e come prime righe ci scriviamo:

# Inizio .htaccess
RewriteEngine On
RewriteBase /

Ora siamo pronti per inserire tutte le istruzioni che ci servono. Molte sono utili per ottimizzare l’indicizzazione del sito nei motori di ricerca, altre invece sono importanti per impedire abusi o limitare l’utilizzo di certe risorse, ma si possono anche correggere errori causati da pagine, cartelle e sottodomini non più disponibili.

Come in qualsiasi file di configurazione di Apache, se vogliamo scrivere di tanto in tanto dei commenti, che potrebbero tornarci utili, basta iniziare la riga con un cancelletto (#).

Possiamo ad esempio reindirizzare tutte le richieste da miosito.it a www.miosito.it, in modo da non penalizzare l’indicizzazione ed evitare contenuti duplicati.
Per fare questo basta aggiungere queste istruzioni:

# Reindirizzamento da miosito.it a www.miosito.it
RewriteCond %{HTTP_HOST} ^miosito.it [NC]
RewriteRule ^(.*)$ http://www.miosito.it/$1 [L,R=301]

Abbiamo cambiato il nome ad una directory, da www.miosito.it/cartella1/ a www.miosito.it/cartella2/?
Nessun problema, questa semplice regoletta risolve tutto:

# Reindirizzamento da cartella1 a cartella2
RewriteRule ^/cartella1/(.*) http://www.miosito.it/cartella2/$1 [R=301,L]

Infine, possiamo evitare che le immagini del nostro sito possano essere indebitamente visualizzate su altri siti, il famigerato HotLinking, aggiungendo al danno la beffa di rubarci pure la preziosissima banda:

# Evitare Hotlinking
RRewriteCond %{HTTP_REFERER} !^http://(.+\.)?miosito\.it/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|bmp|png)$ http://www.miosito.it/cuccato.png [L]

La regola come nell’esempio qui sopra funziona con i file con estensione gif, jpg, png, jpg e jpeg, e al posto delle immagini mostra una immagine realizzata ad arte, il file cuccato.png situato nella radice del nostro sito (il contenuto è a vostra discrezione…).

Con la giusta sintassi, e l’ausilio delle [W:espressioni regolari], è facile immaginare che le potenzialità e gli utilizzi del Rewrite e delle regole RewriteRule sono praticamente infinite, nei prossimi articoli ne vedremo delle altre.

Qualsiasi commento, correzione,  o esempio di utilizzo delle RewriteRule è ovviamente particolarmente gradito 😉

Tags: , , ,

Trackbacks/Pingbacks

  1. √ La struttura migliore per i permalink di WordPress | Roberto Rota - 6 Dic 2012

    […] A manina, intervenendo sul file .htaccess a suon di regole di rewrite ed espressioni regolari. […]

  2. √ Prevenzione errori 404 e motori di ricerca - 25 Mag 2015

    […] non è difficilissimo, con semplici regole di rewrite, e l’aiuto di espressioni regolari per i casi più impegnativi, è possibile creare i […]

Dubbi o suggerimenti? Lascia un commento!

I love Instagram