Indicazioni sulla creazione di Rewrite Rule

Per Hosting Linux e Performance Hosting

In questo articolo scoprirai quali sono le fonti di errore che puoi controllare se le Rewrite Rule non intervengono come desiderato.

Utilizzando le Rewrite Rule (regole di inoltro) in un file .htaccess puoi rinominare o reindirizzare pagine. Ad esempio, puoi rinominare gli URL delle tue pagine web per l'ottimizzazione dei motori di ricerca (SEO) o reindirizzare l'accesso per diversi scopi.

Nota bene:

Le Rewrite Rule vengono definite sul server all'interno di un file .htaccess. Nell'articolo Creare un file che inizia con un . (punto) su un PC Windows viene spiegato come creare un file .htaccess. Assicurati che il nome del file che carichi sul tuo spazio web tramite Webspace Explorer o FTP sia effettivamente .htaccess.

mod_rewrite e attivazione di RewriteEngine

Sui server Hosting il modulo Apache mod_rewrite è già attivo di default. Affinché le Rewrite Rule possano intervenire, attiva il cosiddetto RewriteEngine. A tal proposito, immetti il seguente comando all'inizio del file .htaccess:

RewriteEngine On

Parametri RewriteBase e indicazione di directory

Dopo l'attivazione di RewriteEngine è necessario inoltre indicare la cosiddetta RewriteBase all'inizio del file .htaccess:

RewriteBase /

Con RewriteBase puoi definire da quale directory deve intervenire la RewriteRule. Se RewriteBase viene indicata come sopra con /, il percorso di uscita è la directory con la quale è collegato il dominio che deve essere reindirizzato. Per scoprire con quale directory è attualmente collegato un dominio, è sufficiente vedere nell'IONOS all'interno della Gestione dominio (Dominio > Gestisci dominio).

RewriteBase e RewriteRule nella stessa directory

Se la RewriteRule creata interviene nella stessa directory per la quale è stata definita anche la RewriteBase, non indicare per la tua RewriteRule altri percorsi di directory. È sufficiente l'indicazione del file con il / preposto.

RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R,L] 

RewriteBase e RewriteRule in directory diverse

Se la RewriteRule interviene in una directory diversa rispetto a quanto prestabilito dalla RewriteBase, questa deve essere definita con l'indicazione corrispondente del percorso della directory.

Esempio di RewriteRule che deve agire in una directory diversa rispetto a quanto prestabilito dalla RewriteBase.
 

La seguente RewriteRule stabilisce che per ogni accesso URL a una pagina HTML non esistente deve essere caricato automaticamente il file index.html dalla directory /test.

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.html$ test/index.html 

Nel caso in cui il dominio sia già stato collegato tramite l'IONOS alla directory /test, l'indicazione della directory nella RewriteRule non è più necessaria, dal momento che questa è stata già definita tramite indicazione nella RewriteBase.

Suggerimenti per evitare problemi

Nota bene:

Le Rewrite Rule possono essere molto complesse, generando un errore 500 anche alla minima irregolarità. Tali errori possono essere causati anche da un solo carattere indicato in modo errato. Non si tratta di un errore del server. Solitamente il sito web riprende il normale funzionamento non appena le relative righe sono state convertite in commenti nel file .htaccess.

Elenchiamo qui le cause di errore più frequenti che possono provocare un mancato intervento di una Rewrite Rule, anche se non genera alcun errore 500.

  • Assicurati che .htaccess sia stato posizionato nella directory corretta. Occorre notare che .htaccess ha un effetto ricorsivo. Agisce quindi sulla directory in cui è stato salvato e le rispettive sottodirectory.

  • Se possibile, evita file .htaccess multipli annidati a livello del percorso. Errori in un .htaccess di una sottodirectory in determinate circostanze possono influire negativamente sulle Rewrite Rule sovraordinate nei livelli di directory superiori.

  • Per tale motivo, l'ideale sarebbe creare per ogni dominio o presenza web una directory separata. In questo modo potrai definire comodamente per ogni dominio un file .htaccess e Rewrite Rule proprie, che non si influenzano a vicenda.

  • Hai creato all'interno della stessa directory una directory protetta su IONOS? Questa funzione sovrascrive i file .htaccess creati autonomamente e pertanto rende inefficaci le tue Rewrite Rule. Il nostro suggerimento: crea autonomamente la protezione della directory in .htaccess utilizzando l'articolo Configurare una protezione per le directory con .htaccess e FTP.

  • Controlla se le funzioni sono convertite in commenti (disattivate). Alcuni script e sistemi di content management (CMS) già pronti, come ad es. Joomla, convertono in commentole Rewrite Rule per evitare l'insorgenza di problemi già durante l'installazione. In un .htaccess i comandi vengono trasformati in commenti inserendo prima di una riga un cancelletto (#):

# Esempio di Rewrite Rule:
# (trasforma http://dominio.it/xyz.html in http://dominio.it/index.php?xyz
#
RewriteEngine on
RewriteBase /
# RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R,L]

In questo esempio la RewriteRule effettiva è stata convertita in commento e pertanto non interviene. Rimuovi il cancelletto dalla RewriteRule e salva il file .htaccess modificato sul server.

  • Verifica se al file .htaccess sono stati assegnati i diritti necessari (chmod). In Webspace Explorer puoi adattare i diritti dei file al .htaccess tramite tasto destro del mouse e la selezione del punto Modifica diritti. Nel punto Sistema di scrittura ottale immetti il valore 644. Ciò è sufficiente per le funzioni di un .htaccess.
  • Leggi attentamente i comandi per cercare eventuali errori di scrittura e assicurati che non ci siano elementi mancanti.