Per Hosting Linux e Performance Hosting

In questo articolo ti spieghiamo quali sono le fonti di errore a cui fare attenzione se le Rewrite Rule non funzionano come si desidera.

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.

Attenzione!

Le Rewrite Rule possono essere molto complesse e generare un errore 500 anche alla minima irregolarità. Questi errori possono essere causati anche da un solo carattere indicato in modo errato. Non si tratta perciò 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.

.htaccess

Le Rewrite Rule vengono definite all'interno di un file .htaccess sullo spazio web o sul server. 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 funzionare, attiva il cosiddetto RewriteEngine. A questo scopo 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 applicarsi 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'account IONOS all'interno della gestione dominio (Dominio > Gestisci dominio).

RewriteBase e RewriteRule nella stessa directory

Se la RewriteRule creata ha effetto 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 ha effetto 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'account 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

Elenchiamo qui le cause di errore più frequenti che possono provocare l'inefficacia di una Rewrite Rule, anche se non compare 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 già pronti e sistemi di content management (CMS), come ad esempio Joomla, convertono in commento le 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 ha effetto. 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 alla ricerca di eventuali errori di scrittura e assicurati che non ci siano elementi mancanti.