htaccess: RewriteRule multipli con un RewriteCond

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

Utilizzando le direttive rewrite all'interno dei files htaccess è possibile gestire i rewrite impostando una o più condizioni tramite RewriteCond.
Ad esempio:

RewriteCond  %{HTTP_HOST}  !^www.nomesito.it$
RewriteRule  /pagina1  http://www.nuovosito.com/pagina1 [L,R=301]

Se ci sono diverse pagine che devono essere gestite duplicare la struttura RewriteCond/RewriteRule per 10 / 100 volte non è molto comodo, soprattutto se poi si devono fare modifiche.
Per evitare di scrivere righe in più e per rendere più leggibile il codice è possibile utilizzare l'istruzione "skip" che permette di saltare N elementi di tipo RewriteRule se la condizione non è vera.

Ecco un esempio veloce:

RewriteCond  %{HTTP_HOST}  !^www.nomesito.it$
#se la condizione non è vera esegue lo skip di S righe
RewriteRule  .?  -  [S=4]
RewriteRule  /pagina1  http://www.nuovosito.com/pagina1 [L,R=301]
RewriteRule  /pagina2  http://www.nuovosito.com/pagina2 [L,R=301]
RewriteRule  /pagina3  http://www.nuovosito.com/pagina3 [L,R=301]
RewriteRule  /pagina4  http://www.nuovosito.com/pagina4 [L,R=301]

Nel caso in cui ci siano più istruzioni è sufficiente modificare il numero in S=4 in base agli elementi inseriti.

Condividi questo post


Commenti