Comment créer des règles de réécriture dans Nginx

Les règles de réécriture NGINX offrent un moyen puissant de modifier et de gérer les requêtes d'URL sur votre serveur Web. Ces règles sont essentielles pour rediriger les URL, modifier les structures des URL et améliorer le référencement. En tirant parti des règles de réécriture, vous pouvez garantir que les utilisateurs et les moteurs de recherche peuvent accéder efficacement à votre contenu et maintenir une structure d'URL propre et organisée. La maîtrise des règles de réécriture vous permet d'améliorer les fonctionnalités et la flexibilité de votre serveur Web, offrant ainsi une meilleure expérience utilisateur globale.

Ce guide expliquera comment créer des règles de réécriture dans NGINX, en fournissant des exemples clairs et des étapes pour vous aider à configurer votre serveur pour gérer efficacement les modifications d'URL.

Règles de réécriture NGINX : directive de retour

Le NGINX return La directive est un outil puissant pour gérer les réponses du serveur. Il est principalement utilisé pour rediriger les clients vers différentes URL ou pour envoyer des codes d'état spécifiques. Cette directive simplifie la redirection du trafic, notamment lors d'un déplacement ou d'une restructuration de votre site Internet. C'est essentiel pour le référencement et le maintien de l'expérience utilisateur pendant les transitions. Examinons un exemple unique pour comprendre son application :

Exemple : Supposons que vous souhaitiez rediriger les utilisateurs d'une ancienne page vers une nouvelle. Dans votre fichier de configuration NGINX, vous pouvez utiliser le return directive comme suit :

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

Dans cet exemple, toute requête adressée à oldsite.com est définitivement redirigée vers newsite.com, en préservant l'URI de la requête. Le code de statut 301 indique une redirection permanente, informant les moteurs de recherche de mettre à jour leur indexation.

Règles de réécriture NGINX : directive de réécriture

La directive de réécriture NGINX est utilisée pour modifier les URI de requête de diverses manières avant un traitement ultérieur. Elle est plus polyvalente que la directive return, permettant des manipulations d'URL complexes basées sur des conditions. Cette fonctionnalité est cruciale pour créer des URL optimisées pour le référencement et gérer les liens existants.

Exemple : Imaginez que vous deviez convertir une URL dynamique en une URL statique pour un meilleur référencement. Vous pouvez utiliser la directive rewrite comme ceci :

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

Dans ce scénario, une URL telle que example.com/products/123/2 est réécrite en interne en example.com/product?id=123&page=2. Le dernier indicateur indique que le processus de réécriture doit s'arrêter et que le nouvel URI doit être réévalué.

Exemples de règles de réécriture NGINX

Implémentation de règles de réécriture HTTPS dans NGINX

Garantir des connexions sécurisées via HTTPS est crucial pour la sécurité des données. La directive de réécriture NGINX peut rediriger tout le trafic HTTP vers HTTPS, améliorant ainsi la sécurité des données en transit.

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

Dans cet exemple, les requêtes HTTP vers example.com sont redirigées vers HTTPS, garantissant une communication cryptée.

Rationalisation des URL : suppression des barres obliques en double dans les règles de réécriture NGINX

Parfois, les URL peuvent contenir des barres obliques en double, ce qui entraîne une confusion ou des erreurs. La directive de réécriture de NGINX gère efficacement cela en convertissant les URL avec des doubles barres obliques en une seule barre oblique.

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

Cette règle rationalise les URL en supprimant les barres obliques redondantes.

Redirection d'annuaire : règles de réécriture NGINX en action

Lors de la réorganisation ou du déplacement de ressources, il est souvent nécessaire de rediriger efficacement des répertoires entiers. NGINX facilite cela grâce à sa règle de réécriture.

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

Cette commande redirige toutes les requêtes de /old-directory/ vers /new-directory/.

Manipulation de chaîne de requête à l'aide de règles de réécriture dans NGINX

La modification des URL en fonction des chaînes de requête peut être particulièrement bénéfique lors de la refonte du site. Les règles de réécriture NGINX permettent une restructuration dynamique des URL en fonction de ces paramètres.

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

Ici, la règle de réécriture transforme les chaînes de requête complexes en URL plus rationalisées.

Garantir des URL uniformes : barre oblique finale dans les règles de réécriture NGINX

L'uniformité de la structure des URL, telle que la barre oblique finale, peut être essentielle à la cohérence et au référencement du site.

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

Cette règle garantit que toutes les URL se terminent par une barre oblique, conservant ainsi un format standardisé.

Redirection basée sur les méthodes : utilisation de règles de réécriture dans NGINX

NGINX permet des redirections basées sur des méthodes de requête spécifiques, telles que POST, qui peuvent être cruciales pour gérer en toute sécurité les soumissions de formulaires.

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

Cette commande redirige toutes les requêtes POST vers une URL HTTPS.

Protection des images avec les règles de réécriture NGINX

Protégez les ressources de votre serveur en empêchant les liens directs non autorisés vers vos images.

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;
    }
}

Cette configuration redirige les requêtes avec des référents non valides, bloquant efficacement les hotlinks.

Application des URL minuscules pour plus de cohérence

Le maintien des URL en minuscules sur votre site améliore la cohérence et évite toute confusion.

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

Cette commande convertit tous les éléments d'URL majuscules en minuscules.

Gestion des modifications dans la structure des URL

S'adapter aux nouvelles structures d'URL sans perdre de trafic ni nuire à l'expérience utilisateur est crucial lors des mises à jour de sites Web.

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

Redirige les utilisateurs et les moteurs de recherche des anciennes URL vers les nouvelles.

Création d'URL propres pour les plates-formes CMS

Pour les plates-formes CMS reposant sur des chaînes de requête, les règles de réécriture NGINX peuvent créer des URL plus propres et plus conviviales pour le référencement.

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;
}

Cette configuration transforme les URL dans un format plus lisible, améliorant potentiellement les performances de référencement.

Conclusion

En créant et en configurant des règles de réécriture dans NGINX, vous pouvez optimiser la gestion de vos URL, améliorer le référencement et garantir une expérience utilisateur transparente. Examinez et testez régulièrement vos règles de réécriture pour vous assurer qu'elles fonctionnent comme prévu et effectuez les ajustements nécessaires. La maîtrise des règles de réécriture NGINX vous permet d'exploiter toute la puissance de NGINX pour un serveur Web plus dynamique et réactif.

Joshua James
Suis-moi
Les derniers articles par Joshua James (tout voir)

Laissez un commentaire