Skip to content

Quando un utente richiede un URL, il web server consente di pubblicare contenuti da un URL diverso, utilizzando la riscrittura dell’URL oppure il reindirizzamento. Tuttavia, esiste una differenza fondamentale tra la riscrittura dell’URL e il reindirizzamento di cui è necessario essere a conoscenza prima di utilizzarli. In questo articolo, esamineremo la differenza tra riscrittura e reindirizzamento nei principali web server come Nginx, Apache e IIS.

In parole semplici, un reindirizzamento è una richiesta lato client per far sì che il browser vada verso un altro URL. Ciò significa che l’URL che si vede nel browser si aggiornerà al nuovo URL.

Una riscrittura è una riscrittura lato server dell’URL prima che sia completamente elaborato dal web server. Questo non cambierà ciò che si vede nel browser perché le modifiche sono nascoste all’utente.

URL Rewriting

La riscrittura dell’URL consente di riscrivere l’URL richiesto come URL diverso prima che venga elaborato dal server. Ecco un esempio di istruzione di riscrittura dell’URL in Apache in cui riscriviamo /prodotto-id/1 come /prodotto/1.html

Rewrite ^prodotto-id/([0-9]+)$ /prodotto/$1.html

Nell’esempio precedente, il server Apache accetterà la richiesta per /prodotto-id/1 e servirà il contenuto in /prodotto/1.html. Lo farà per tutti gli URL di prodotto come /prodotto-id/1, /prodotto-id/2, ecc.

In questo caso, sebbene gli utenti richiedano /prodotto-id/1, viene loro offerto il contenuto /prodotto/1.html senza alcuna conoscenza. Questa modifica dell’URL avviene internamente al server e l’utente non lo saprà poiché l’URL del browser non cambia.

L’URL rewriting è un metodo utilizzato per modificare l’URL richiesto dal client prima che raggiunga il server di destinazione. In pratica, il server web riceve una richiesta con un URL originale, e poi riscrive internamente l’URL in un altro formato, senza che il client ne sia a conoscenza. Questa riscrittura viene effettuata dal server stesso e non comporta una nuova richiesta HTTP da parte del client.

L’URL rewriting è utile quando si desidera nascondere la struttura effettiva dei file e delle directory del server, o per semplificare URL complessi. Un esempio comune di URL rewriting è la conversione di URL dinamici generati da script (come quelli che utilizzano parametri di query) in URL più semplici e leggibili dall’utente.

HTTP Redirect

Il reindirizzamento URL consente di reindirizzare il browser a un URL diverso e continuare l’elaborazione a quell’URL. Ecco un esempio di regola di reindirizzamento URL in Apache che consente di reindirizzare da prodotto-id/1 a /prodotto/1.html

Redirect ^prodotto-id/([0-9]+)$ /prodotto/$1.html

Nell’esempio precedente, quando gli utenti richiedono /prodotto-id/1, /prodotto-id/2, ecc. vengono reindirizzati rispettivamente a /prodotto/1, /prodotto/2, ecc.

Il redirect, a differenze dell’URL rewrite, è un processo in cui il server web invia una risposta al client – lo status code, indicando che l’URL richiesto è stato modificato e che il client deve inviare una nuova richiesta all’URL modificato. Questo comporta due richieste HTTP separate: la prima per l’URL originale e la seconda per l’URL a cui si è stati reindirizzati.

Il redirect viene utilizzato principalmente quando si desidera indirizzare gli utenti da un vecchio URL a uno nuovo, come nel caso di un cambio di dominio o di una ristrutturazione del sito. Esistono diversi tipi di redirect, come il redirect 301 (permanente) e il redirect 302 (temporaneo), che comunicano al client la natura del cambiamento.

Differenza tra riscrittura URL e reindirizzamento

CaratteristicaURL RewritingHTTP Redirect
UsoGeneralmente utilizzato per creare URL puliti e SEO-friendly, o per gestire dinamicamente le richieste dei client.Utilizzato per inviare l’utente (o un crawler di un motore di ricerca) a una nuova posizione, tipicamente quando una pagina è stata spostata o eliminata.
Cambiamento dell’URLL’URL visualizzato nella barra degli indirizzi del browser non cambia, a meno che non sia specificamente configurato per farlo.L’URL visualizzato nella barra degli indirizzi del browser cambia per riflettere la nuova posizione.
Codice di stato HTTPNon invia un codice di stato HTTP al browser o al client.Invia un codice di stato HTTP al browser o al client. Ad esempio, un reindirizzamento 301 invia un codice di stato 301 “Moved Permanently”.
Effetto sui motori di ricercaGeneralmente non ha effetto sui motori di ricerca, a meno che non sia utilizzato per creare URL duplicati.Può influire sulla SEO. Ad esempio, un reindirizzamento 301 trasferisce la maggior parte del “link juice” SEO all’URL di destinazione.
ImplementazioneImplementato sul server web, ad esempio utilizzando il modulo mod_rewrite di Apache nel file .htaccess.Può essere implementato a livello di server web o a livello di applicazione, ad esempio con una risposta HTTP che include un’intestazione “Location”.

In caso di riscrittura URL, il server esegue internamente la sostituzione dell’URL e fornisce la risposta da un URL diverso. L’URL richiesto nel browser non cambia.

D’altra parte, in caso di reindirizzamento URL, quando un browser richiede un URL specifico, il server invia una risposta di reindirizzamento 3xx al browser, insieme alla posizione di reindirizzamento. Quindi il browser invia automaticamente una nuova richiesta alla posizione di reindirizzamento. Quindi l’URL richiesto nel browser cambia.

Le riscritture degli URL sono utili se desideri visualizzare URL SEO-friendly e intuitivi (ad es. /prodotto) ma pubblicare contenuti da URL non carini (ad es. index.php?category=1&page=3&prod-id=213). È anche utile se desideri servire l’URL richiesto da una posizione diversa, senza modificare l’URL. In questo caso, non vuoi che i motori di ricerca e gli utenti sappiano che stai offrendo contenuti da una posizione diversa.

I reindirizzamenti URL sono utili se hai spostato la tua pagina in una nuova posizione e desideri pubblicare contenuti da questa posizione. In questo caso, stai comunicando agli utenti e ai motori di ricerca che il tuo URL è stato spostato. È utile quando desideri spostare o ristrutturare il tuo sito Web o consolidare più pagine in un’unica pagina.

La differenza principale tra URL rewriting e redirect è che l’URL rewriting avviene internamente nel server web senza coinvolgere il client, mentre il redirect richiede una nuova richiesta HTTP da parte del client all’URL modificato. L’URL rewriting è spesso utilizzato per semplificare o nascondere la struttura delle URL, mentre il redirect viene utilizzato per indirizzare gli utenti tra vecchi e nuovi URL.

Status code ed intestazioni HTTP

Quando si utilizza un redirect, il server invia al client uno status code HTTP per indicare che l’URL richiesto è stato modificato e che il client deve inviare una nuova richiesta all’URL modificato. Gli status code più comuni utilizzati per i redirect sono: 301 e 302. Nel caso di un redirect, il server invia anche un’intestazione “Location” nell’intestazione HTTP della risposta, che contiene il nuovo URL a cui il client deve inviare una nuova richiesta. I motori di ricerca indicizzeranno l’URL finale.

Durante un’operazione di URL rewrite, il server modifica internamente l’URL richiesto prima di elaborare la richiesta. Non viene inviato uno status code HTTP al client per indicare che l’URL è stato modificato, poiché il processo avviene internamente nel server e non coinvolge il client. Di conseguenza, l’intestazione “Location” non viene inviata al client, poiché il client non deve essere a conoscenza del cambiamento dell’URL. I motori di ricerca indicizzeranno l’URL che vedrà il client.

Implementazioni con Apache

Gli esempi di Apache per URL rewrite e redirect sono simili, ma hanno una differenza chiave nella direttiva della RewriteRule.

URL rewrite

RewriteEngine On
RewriteRule ^vecchio-url$ nuovo-url [L]

HTTP Redirect

RewriteEngine On
RewriteRule ^vecchio-url$ nuovo-url [R=301,L]

La differenza tra i due esempi è la presenza di R=301 nella direttiva della RewriteRule per il redirect. R=301 indica che si tratta di un redirect permanente, mentre L (presente in entrambi gli esempi) indica che è l’ultima regola da applicare.

Implementazioni con Nginx

In Nginx, le direttive rewrite e return vengono utilizzate per scopi diversi.

URL rewrite

location /vecchio-url {
    rewrite ^/vecchio-url$ /nuovo-url last;
}

La direttiva rewrite in Nginx viene utilizzata principalmente per la riscrittura degli URL. Tuttavia, può anche essere utilizzata per implementare un redirect, specificando un codice di stato HTTP appropriato come parametro aggiuntivo. La direttiva rewrite utilizza espressioni regolari per abbinare e modificare gli URL.

HTTP Redirect

location /vecchio-url {
    return 301 /nuovo-url;
}

La direttiva return in Nginx viene utilizzata per restituire immediatamente un codice di stato HTTP e, opzionalmente, un URL di reindirizzamento. È un modo più semplice e diretto per implementare un redirect rispetto all’utilizzo della direttiva rewrite.

La differenza principale tra le due direttive è che rewrite è più flessibile e potente, in quanto consente di utilizzare espressioni regolari e altre opzioni avanzate. Tuttavia, questo può anche renderla più complessa da utilizzare e configurare. D’altra parte, la direttiva return è più semplice e diretta, ideale per implementare un redirect senza la necessità di utilizzare espressioni regolari o opzioni avanzate.

Implementazioni con IIS

URL rewrite

<rewrite>
    <rules>
        <rule name="Rewrite rule" stopProcessing="true">
            <match url="^vecchio-url$" />
            <action type="Rewrite" url="nuovo-url" />
        </rule>
    </rules>
</rewrite>

HTTP Redirect

<rewrite>
    <rules>
        <rule name="Redirect rule" stopProcessing="true">
            <match url="^vecchio-url$" />
            <action type="Redirect" url="nuovo-url" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

Ricorda di sostituire “vecchio-url” e “nuovo-url” con gli URL effettivi che desideri riscrivere o reindirizzare. Inoltre, se stai utilizzando un file .htaccess in Apache, assicurati che il file si trovi nella directory corretta e che il server sia configurato per utilizzarlo.

In conclusione, a meno che non vi siano esigenze specifiche che richiedano l’utilizzo dell’URL rewrite, si raccomanda di optare per il metodo del redirect, poiché è più semplice da implementare e più diretto nel comunicare le modifiche agli URL ai client.

Articoli correlati

Autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’expertise di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto oltre 1123 richieste di preventivo, un segnale chiaro della fiducia che imprenditori e manager, come te, ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google, noi siamo pronti a fornire quel valore aggiunto. Affidati alla nostra esperienza per fare la differenza.
Richiedi un preventivo

Non perderti altre guide, iscriviti per ricevere un avviso mensile con gli aggiornamenti del blog!

Iscriviti alla newsletter!

Informativa sui cookies

Noi e terze parti selezionate utilizziamo cookie o tecnologie simili per finalità tecniche e, con il tuo consenso, anche per le finalità di esperienza e misurazione come specificato nella cookie policy. Puoi liberamente prestare, rifiutare o revocare il tuo consenso, in qualsiasi momento, accedendo al pannello delle preferenze. Il rifiuto del consenso può rendere non disponibili le relative funzioni. Usa il pulsante “Accetta” per acconsentire. Usa il pulsante “Rifiuta” per continuare senza accettare.