Htaccess rewrite rule: come si fanno in WordPress e nelle SPA

Foto dell'autore

Andrea Barbieri

 

Home > News feed > Supporto Tecnico > Htaccess rewrite rule: come si fanno in WordPress e nelle SPA

Il file .htaccess (HyperText Access) è un file di configurazione utilizzato dai server web basati su Apache. Una delle sue principali funzioni è la riscrittura degli URL, che può essere estremamente utile per vari scopi, come il SEO o la semplice organizzazione dei contenuti. Utilizza il modulo mod_rewrite per implementare potenti e flessibili regole di riscrittura.

Come funziona una Rewrite Rule nel file .htaccess

Struttura di una Rewrite Rule

Una tipica rewrite rule in un file .htaccess segue questo formato:

RewriteEngine On
RewriteRule ^vecchio-percorso$ nuovo-percorso [opzioni]

In questo esempio, vecchio-percorso è l’URL che desideri riscrivere, e nuovo-percorso è l’URL in cui verrà trasformato. Le opzioni possono includere vari flag, come [L] per indicare che questa è l’ultima regola da applicare.

Applicare una Rewrite Rule Semplice

Supponiamo di voler riscrivere un URL da example.com/prodotto.php?id=1 a example.com/prodotto/1. Ecco come farlo:

RewriteEngine On
RewriteRule ^prodotto/([0-9]+)$ prodotto.php?id=$1 [L]

Qui, ^prodotto/([0-9]+)$ è una espressione regolare che corrisponde a qualsiasi URL che inizia con “prodotto/” seguito da uno o più numeri. Il segnaposto $1 viene utilizzato per inserire la parte numerica dell’URL originale nel nuovo URL.

Aggiungere Flags e Condizioni

Possiamo anche aggiungere condizioni (RewriteCond) per rendere la nostra regola più specifica. Ad esempio:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^prodotto/([0-9]+)$ prodotto.php?id=$1 [L]

Queste condizioni impediscono la riscrittura se l’URL corrisponde a un file o una directory effettivamente esistente.

Trovare il file .htacess su WordPress

In un’installazione tipica di WordPress, il file .htaccess è posizionato nella directory radice del tuo sito web, dove si trovano anche altri file e cartelle importanti come wp-config.php, wp-admin, e wp-content. Tuttavia, in alcune circostanze, il file potrebbe non essere immediatamente visibile per vari motivi.

Come Visualizzare File Nascosti come .htaccess

Il file .htaccess è un file nascosto in sistemi Unix-like, e il punto davanti al nome indica che è un file nascosto. Per visualizzarlo:

  • Se stai utilizzando un client FTP come FileZilla, assicurati che l’opzione per visualizzare i file nascosti sia attivata.
  • Nel caso stai accedendo alla directory attraverso una shell SSH, usa il comando ls -a per elencare tutti i file, inclusi quelli nascosti.
  • Se stai utilizzando un pannello di controllo hosting come cPanel, esiste un’opzione per mostrare i file nascosti nel file manager.

Creare un File .htaccess se Non Esiste

Se non riesci a trovare il file .htaccess, potrebbe essere che non sia stato ancora creato. In tal caso, puoi crearne uno tu stesso:

1. Crea un file vuoto e chiamalo ".htaccess" (assicurati che inizi con un punto).
2. Carica questo file nella directory radice del tuo sito WordPress.
3. Aggiungi le regole necessarie e salva le modifiche.

Modifiche Tramite l’Interfaccia di WordPress

Per alcune operazioni, come la configurazione dei permalink, WordPress tenterà di scrivere le regole direttamente nel file .htaccess. Puoi accedere a questa funzione attraverso il menu “Impostazioni” e quindi “Permalink” nel cruscotto di WordPress.

Importante: Backup e Precauzioni

  • Prima di effettuare qualsiasi modifica al file .htaccess, è altamente consigliato effettuare un backup.
  • Le modifiche a .htaccess possono avere effetti significativi sul comportamento del sito; pertanto, è prudente testarle in un ambiente di sviluppo prima di applicarle al sito live.

Rewrite Rule su Single Page Application

Il fine principale del rewriting delle URL in una SPA è quello di indirizzare tutte le richieste al tuo entry point dell’applicazione, di solito index.html. In questo modo, la logica di routing della tua applicazione JavaScript può prendere il controllo e gestire il cambiamento della vista.

Regole di Base per Rewrite in SPA

Una regola di base per reindirizzare tutte le richieste verso index.html potrebbe apparire come segue:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]

In questa configurazione, le condizioni RewriteCond verificano che la richiesta non sia per un file o una directory esistente. Se la condizione è soddisfatta, la RewriteRule reindirizza tutte le richieste verso index.html.

Conservare il Path Originale

È importante notare che la regola di cui sopra non altera il percorso URL; la SPA deve ancora leggere la posizione dall’URL per determinare quale vista caricare. Di solito, questo è gestito da librerie di routing front-end come React Router o Vue Router.

Utilizzo con API e Endpoint Esterni

Se la tua SPA comunica con delle API, è possibile che tu voglia escludere certi percorsi dal reindirizzamento. Per farlo, puoi aggiungere ulteriori RewriteCond per evitare la riscrittura di certi URL, come questo:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/api/
RewriteRule ^ index.html [L]

In questo caso, qualsiasi richiesta che inizia con /api/ non verrà reindirizzata verso index.html.

Rewrite: problemi e risoluzioni

Le Rewrite Rule nel file .htaccess spesso possono causare problemi se non configurate correttamente. Ecco alcuni problemi comuni e le relative soluzioni.

Loop di Reindirizzamento Infinito

Uno dei problemi più frequenti con le Rewrite Rule è il loop di reindirizzamento infinito, che può rendere il sito inaccessibile.

  • Soluzione: Utilizza condizioni (RewriteCond) per escludere specifici percorsi o file dal reindirizzamento.

Regole in Conflitto

Se più regole sembrano interferire l’una con l’altra, potresti ottenere risultati inaspettati.

  • Soluzione: Organizza le regole in un ordine logico e utilizza l’opzione [L] per interrompere l’elaborazione ulteriore delle regole dopo una corrispondenza.

File o Directory Inaccessibili

Alcune regole potrebbero impedire l’accesso a file o directory essenziali.

  • Soluzione: Aggiungi condizioni per escludere questi file o directory dalle Rewrite Rule.

Errore 500: Internal Server Error

Un errore nella sintassi delle Rewrite Rule può portare a un errore 500.

  • Soluzione: Controlla attentamente la sintassi e il formato delle tue regole. Utilizza gli strumenti di validazione e testa le modifiche in un ambiente di sviluppo.

Problemi con HTTPS

Se il sito non riesce a forzare correttamente la connessione HTTPS, potrebbe esserci un problema con le tue Rewrite Rule.

  • Soluzione: Assicurati di avere una regola specifica per reindirizzare il traffico da HTTP a HTTPS.

Strumenti e Tecniche per il Debugging

  • Verifica che il modulo mod_rewrite sia attivo sul tuo server Apache.
  • Utilizza il log di rewrite di Apache per identificare e risolvere problemi nelle Rewrite Rule. Per abilitarlo, puoi utilizzare direttive come RewriteLog e RewriteLogLevel nel file di configurazione di Apache.
  • Prima di apportare modifiche, esegui sempre un backup del file .htaccess attuale.

Fonti e sitografia

Lascia un commento

Panoramica privacy
Multinazionali Tech

Questo sito web utilizza i cookie per consentirci di fornirti la migliore esperienza utente possibile. Le informazioni sui cookie vengono memorizzate nel tuo browser ed eseguono funzioni come riconoscerti quando ritorni sul nostro sito Web e aiutare il nostro team a capire quali sezioni del sito Web trovi più interessanti e utili. Maggiori informazioni qui

Cookie strettamente necessari

I cookie strettamente necessari dovrebbero essere sempre attivati per poter salvare le tue preferenze per le impostazioni dei cookie.

Cookie di terze parti

Questo sito Web utilizza Google Analytics per raccogliere informazioni anonime come il numero di visitatori del sito e le pagine più popolari.

Mantenere questo cookie abilitato ci aiuta a migliorare il nostro sito Web.