NginX 重定向

NginX 重定向

作为一个 NginX 重定向的新手,并且对我的正则表达式也不是特别熟悉,有人可以提供一些关于如何以合理的方式执行以下 301 重定向的要点吗?

(抱歉,示例名称太糟糕了)

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

虽然我很希望有人能给我确切的答案 - 但我会满足于一些好的指点或例子,大致说明我需要做什么或我应该采取什么样的方向。

如果有帮助的话我在 Ubuntu 11 上运行 nginx 0.8x 并且网站本身是用 CodeIgniter 编写的,

答案1

最干净的方法是使用地图块。

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

答案2

基本思想应该是这样的:

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

相关内容