1 votes

Redirections NginX

Étant un peu novice en matière de redirections NginX et n'étant pas particulièrement ninja avec mon regex, quelqu'un pourrait-il me donner quelques indications sur la façon de faire les redirections 301 suivantes de manière sensée ?

(toutes nos excuses pour les noms d'exemples affreux)

website.com/what -> website.com/en/what 
website.com/team -> website.com/en/team
website.com/stuff -> website.com/en/newstuff
website.com/stuff/this -> website.com/en/newstuff/foo/bar
website.com/stuff/that -> website.com/en/newstuff/thing/page

Même si j'aimerais que quelqu'un me donne la réponse exacte, je me contenterai de quelques bons conseils ou exemples de ce que je dois faire ou de la direction que je dois prendre.

Si cela peut aider, j'utilise nginx 0.8x sur Ubuntu 11 et le site lui-même est écrit en CodeIgniter,

5voto

Schotime Points 6067

Le moyen le plus propre est d'utiliser un bloc de cartes.

map $uri $new {    
  /aa                   /en/aa;
  /bb                   /newstuff/bb;
  ^/cc/(?P<suffix>.*)$  /$suffix;
  /john                 /users/john/;
}

server {
  server_name   www.example.com;
  rewrite  ^    $new   permanent;
}

1 votes

Les motifs regex comme la troisième entrée doivent être préfixés par ~.

1 votes

@kolbyjack : C'est tout à fait la mesure anti copier-coller que j'inclus dans tous mes posts. Oui, c'est tout à fait ça.

0 votes

Merci d'avoir indiqué les cartes, je ne les avais pas vues avant.

0voto

gWaldo Points 11827

Cela devrait être l'idée de base :

server {
  listen 80;
  server_name website.com;
  root /var/www/website/current/public;

  location /what {
    rewrite /en/what/ redirect;
  }

  location /team {
    rewrite /en/team/ redirect;
  }
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X