作为一个 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;
}
}