Come creare regole di riscrittura in Nginx

Le regole di riscrittura NGINX forniscono un modo potente per modificare e gestire le richieste URL sul tuo server web. Queste regole sono essenziali per reindirizzare gli URL, modificare le strutture degli URL e migliorare la SEO. Sfruttando le regole di riscrittura, puoi garantire che gli utenti e i motori di ricerca possano accedere ai tuoi contenuti in modo efficiente e mantenere una struttura URL pulita e organizzata. Padroneggiare le regole di riscrittura ti consente di migliorare la funzionalità e la flessibilità del tuo server web, offrendo una migliore esperienza utente complessiva.

Questa guida spiegherà come creare regole di riscrittura in NGINX, fornendo esempi e passaggi chiari per aiutarti a configurare il tuo server per gestire le modifiche degli URL in modo efficace.

NGINX riscrive le regole: direttiva sui resi

L'NGINX return La direttiva è un potente strumento per la gestione delle risposte del server. Viene utilizzato principalmente per reindirizzare i client a URL diversi o per inviare codici di stato specifici. Questa direttiva semplifica il reindirizzamento del traffico, in particolare durante lo spostamento o la ristrutturazione del tuo sito web. È essenziale per la SEO e per mantenere l'esperienza dell'utente durante le transizioni. Esaminiamo un esempio unico per comprenderne l'applicazione:

Esempio: supponiamo di voler reindirizzare gli utenti da una vecchia pagina a una nuova. Nel file di configurazione NGINX, potresti utilizzare il file return direttiva come segue:

server {
    listen 80;
    server_name oldsite.com;
    return 301 http://newsite.com$request_uri;
}

In questo esempio, qualsiasi richiesta a oldsite.com viene reindirizzata in modo permanente a newsite.com, preservando l'URI della richiesta. Il codice di stato 301 indica un reindirizzamento permanente, informando i motori di ricerca di aggiornare la propria indicizzazione.

Regole di riscrittura di NGINX: direttiva di riscrittura

La direttiva di riscrittura NGINX viene utilizzata per modificare gli URI di richiesta in vari modi prima dell'ulteriore elaborazione. È più versatile della direttiva return, poiché consente complesse manipolazioni degli URL in base alle condizioni. Questa funzionalità è fondamentale per creare URL SEO-friendly e gestire i collegamenti legacy.

Esempio: immagina di dover convertire un URL dinamico in uno dall'aspetto statico per una migliore SEO. Potresti usare la direttiva di riscrittura in questo modo:

server {
    listen 80;
    server_name example.com;
    location /products {
        rewrite ^/products/([0-9]+)/([0-9]+)$ /product?id=$1&page=$2 last;
    }
}

In questo scenario, un URL come example.com/products/123/2 viene riscritto internamente in example.com/product?id=123&page=2. L'ultimo flag indica che il processo di riscrittura dovrebbe interrompersi e il nuovo URI dovrebbe essere rivalutato.

Esempio di regole di riscrittura NGINX

Implementazione delle regole di riscrittura HTTPS in NGINX

Garantire connessioni sicure tramite HTTPS è fondamentale per la sicurezza dei dati. La direttiva di riscrittura NGINX può reindirizzare tutto il traffico HTTP su HTTPS, migliorando la sicurezza dei dati in transito.

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

In questo esempio, le richieste HTTP a example.com vengono reindirizzate a HTTPS, garantendo la comunicazione crittografata.

Semplificazione degli URL: rimozione delle barre duplicate nelle regole di riscrittura NGINX

Occasionalmente, gli URL potrebbero contenere barre duplicate, causando confusione o errori. La direttiva di riscrittura di NGINX gestisce in modo efficiente questo problema convertendo gli URL con doppie barre in una singola barra.

server {
    server_name example.com;
    if ($request_uri ~* "\/\/") {
        rewrite ^/(.*)/$ /$1 permanent;
    }
}

Questa regola semplifica gli URL rimuovendo eventuali barre ridondanti.

Reindirizzamento delle directory: NGINX riscrive le regole in azione

Quando si riorganizzano o si spostano le risorse, spesso è necessario reindirizzare intere directory in modo efficiente. NGINX facilita tutto ciò attraverso la sua regola di riscrittura.

location ^~ /old-directory/ {
    rewrite ^/old-directory/(.*)$ /new-directory/$1 permanent;
}

Questo comando reindirizza tutte le richieste da /vecchia-directory/ a /nuova-directory/.

Manipolazione delle stringhe di query utilizzando le regole di riscrittura in NGINX

La modifica degli URL in base alle stringhe di query può essere particolarmente utile durante la riprogettazione del sito. Le regole di riscrittura NGINX consentono la ristrutturazione dinamica degli URL in base a questi parametri.

if ($args ~ "^id=(.*)&lang=(.*)") {
    set $id $1;
    set $lang $2;
    rewrite ^/page.php$ /page/$lang/$id? permanent;
}

In questo caso, la regola di riscrittura trasforma stringhe di query complesse in URL più snelli.

Garantire URL uniformi: barra finale nelle regole di riscrittura NGINX

L'uniformità nella struttura dell'URL, come la barra finale, può essere fondamentale per la coerenza del sito e la SEO.

rewrite ^([^.]*[^/])$ $1/ permanent;

Questa regola garantisce che tutti gli URL terminino con una barra, mantenendo un formato standardizzato.

Reindirizzamento basato sul metodo: utilizzo delle regole di riscrittura in NGINX

NGINX consente reindirizzamenti basati su metodi di richiesta specifici, come POST, che può essere fondamentale per gestire in modo sicuro l'invio di moduli.

if ($request_method = POST ) {
    return 301 https://example.com$request_uri;
}

Questo comando reindirizza tutte le richieste POST a un URL HTTPS.

Protezione delle immagini con le regole di riscrittura NGINX

Proteggi le risorse del tuo server impedendo collegamenti diretti non autorizzati alle tue immagini.

location ~ .(gif|png|jpe?g)$ {
    valid_referers none blocked ~.google. ~.bing. ~.yahoo. example.com *.example.com;
    if ($invalid_referer) {
        rewrite ^/images/(.*)$ /stop-hotlinking.$1 last;
    }
}

Questa configurazione reindirizza le richieste con referrer non validi, bloccando di fatto l'hotlinking.

Applicazione degli URL minuscoli per coerenza

Mantenere gli URL in minuscolo nel tuo sito migliora la coerenza e previene la confusione.

location ~ [A-Z] {
    rewrite ^(.*)$ $scheme://$host$1 lowercase;
}

Questo comando converte tutti gli elementi URL maiuscoli in minuscoli.

Gestione delle modifiche nella struttura dell'URL

Adattarsi alle nuove strutture URL senza perdere traffico o danneggiare l'esperienza dell'utente è fondamentale durante gli aggiornamenti del sito web.

server {
    listen 80;
    server_name example.com;
    
    location ~* ^/oldpath/(.*) {
        rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
    }
}

Reindirizza utenti e motori di ricerca dai vecchi ai nuovi URL.

Creazione di URL puliti per piattaforme CMS

Per le piattaforme CMS che si basano su stringhe di query, le regole di riscrittura di NGINX possono creare URL più puliti e più SEO-friendly.

location / {
    try_files $uri $uri/ @extensionless-php;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    try_files $uri =404;
}

location @extensionless-php {
    rewrite ^(/[^.]*[^/])$ $1.php last;
}

Questa configurazione trasforma gli URL in un formato più leggibile, migliorando potenzialmente le prestazioni SEO.

Conclusione

Creando e configurando le regole di riscrittura in NGINX, puoi ottimizzare la gestione degli URL, migliorare il SEO e garantire un'esperienza utente fluida. Rivedi e testa regolarmente le tue regole di riscrittura per assicurarti che funzionino come previsto e apporta le modifiche necessarie. Padroneggiare le regole di riscrittura di NGINX ti consente di sfruttare tutta la potenza di NGINX per un server web più dinamico e reattivo.

Joshua James
Seguimi
Ultimi post di Joshua James (vedi tutto)

Lascia un commento