En utilisant Nginx, vous pouvez avoir besoin de mettre en place des redirections.
Ce tutoriel va vous guider sur la mise en place de ces redirections en configurant vos vhosts.
Redirection une à une sur Nginx
La redirection une à une est la plus simple à mettre en place en éditant votre vhost Nginx :
vim /etc/nginx/sites-available/nom_de_vhost.conf server { listen 80; server_name www.domain.com; rewrite ^/old_link.html$ http://www.domain.com/new_link.html permanent; }
Ce paramètre indique que la redirection est permanente (301). En retirant ce paramètre, la redirection est indiquée comme temporaire (302).
Redirection multiple Nginx
Comme une redirection pas à pas, on peut effectuer des redirections multiples en employant les expressions régulières :
vim /etc/nginx/sites-available/nom_de_vhost.conf server { listen 80; server_name www.domain.com; rewrite ^/old_folder/page-id-.*.html$ http:///old_folder/page-id- permanent; }
Erreur 404 Nginx
En cas de requête de page inexistante sur votre serveur, vous pouvez définir une page d’erreur 404 par défaut.
vim /etc/nginx/sites-available/nom_de_vhost.conf server { listen 80; server_name www.domain.com; error_page 404 /404.php; }
Redirection avec un paramètre Nginx
Pour effectuer une redirection d’une URL avec paramètre old-page.php?parameter=100 vers une URL sans new_page.html, on va rechercher le paramètre à partir d’une condition et ne pas le transmettre à la redirection :
vim /etc/nginx/sites-available/nom_de_vhost.conf location ~ /old_page.php { if ($args ~ parameter=100){ rewrite ^ http://www.domain.com/new_page.html? permanent; } }
Le point d’interrogation final indique à Nginx la fin de la nouvelle URL sans paramètre.
Redirection avec condition Nginx
De la même manière, il est possible d’effectuer une redirection selon une condition :
vim /etc/nginx/sites-available/nom_de_vhost.conf # Redirection avec condition sans paramètre location ~ /old_page.php { if ($arg_page != ""){ rewrite ^ http://www.domain.com/new_page.html? permanent; } } # Redirection avec condition avec paramètre location ~ /old_page.php { if ($arg_page != ""){ rewrite ^ http://www.domain.com/new_page/$arg_page? permanent; } }
Sous-domaine Nginx
Il est également possible d’effectuer une redirection de vos pages domain.com vers un sous-domaine (exmple: www, blog, …) :
vim /etc/nginx/sites-available/nom_de_vhost.conf # Redirection vers le sous domaine blog.domain.com server { listen 80; server_name domain.com; rewrite ^/(.*) http://blog.domain.com/$1 permanent; }