Abbiamo 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 😉
2 risposte