Que vous soyez développeur, admin de site ou simple SEO comme moi, vous venez de vous confronter à la problématique : Comment redigérer mes pages sur Nginx de façon optimisé pour le SEO ?
Préambule
Vous l’avez surement remarqué mais avec un serveur Nginx vous n’avez pas accès au fichier .htaccess. Les directives doivent être implémentées au niveau du fichier de configuration, voici le chemin : etc/nginx/nginx.conf
Pour être plus précis Nginx est généralement situé à /etc/nginx/nginx.conf, mais vous pouvez également avoir des fichiers de configuration supplémentaires dans le répertoire /etc/nginx/conf.d/ ou /etc/nginx/sites-available/. Ces fichiers peuvent être inclus dans le fichier principal de configuration à l’aide de l’instruction « include ».
Dans Nginx, vous créez généralement des fichiers de configuration distincts pour chaque site web (virtual host) dans le répertoire /etc/nginx/sites-available/. Votre nom de domaine suivra le chemin suivant : /etc/nginx/sites-available/mon-domaine.fr
Redirection d’une page vers une page
C’est la redirection la plus simple, voici la redirection 301, pour une redirection temporaire en 302 changer simplement le code http surligné ci-dessous :
server {
listen 80;
server_name www.votre-domaine.com;
location = /votre-page.html {
return 301 http://www.votre-domaine.com/nouvelle-page.html;
}
}
Cas possibles :
La directive « rewrite » est utilisée pour effectuer des réécritures d’URL complexes, tandis que pour une simple redirection permanente (code HTTP 301), il est préférable d’utiliser la directive « return » dans une directive « location ».
server {
listen 80;
server_name www.votre-domaine.com;
rewrite ^/votre-page.html$ http://www.votre-domaine.com/nouvelle-page.html permanent;
}
Le code HTTP 301 est utilisé pour les redirections permanentes, ce qui signifie que les navigateurs et les moteurs de recherche mettront en cache la redirection. Le code HTTP 302 est utilisé pour les redirections temporaires.
Redirection d’une URL avec un paramètre
map $arg_page $redirect_url {
default « »;
~. http://www.votre-domaine.com/nouvelle-page.html;
}
server {
listen 80;
server_name www.votre-domaine.com;
location /ancienne-page.php {
if ($redirect_url != « ») {
return 301 $redirect_url;
}
}
}
L’utilisation de la directive « map » crée une correspondance entre la valeur du paramètre « page » et l’URL de redirection appropriée. Ensuite, dans la directive « location », on vérifie si le paramètre « page » existe et s’il existe une correspondance dans la carte « map ». Si c’est le cas, on effectue la redirection permanente vers l’URL spécifiée.
Rediction vers le sous-domaine www
Dans le cas où vous souhaitez rediriger les requêtes de votre domaine.fr vers www.domaine.fr
server {
listen 80;
server_name votre-domaine.com;
rewrite ^/(.*) http://www.votre_domaine.com/$1 permanent;
}
Définir une page de redirection à partir d’une 404
Vous avez défini une landing page en cas d’erreur 404 ? Utiliser simplement le code suivant :
error_page 404 /404.html;
Conclusion
Ne paniquez pas si vous devez intervenir sur ce genre de problématique, certes beaucoup de site sont sur des serveurs Apaches mais les règles de redirections sont globalement les mêmes, ce qui change c’est la forme. J’espère que cet article vous aura été utile !
PS : Je mettrai à jour l’article au fur et à mesure des problématiques que je rencontrerai en SEO sur ces questions.