nginx将url重定向到新模式

时间:2015-10-06 18:35:20

标签: nginx configuration ghost

我目前正在将我的博客从Wordpress切换到Ghost。幽灵面前有nginx。 迁移后,我认识到旧网址

http://domain.org/2015/10/some-topic

一样迁移
http://domain.org/some-topic

所以约会消失了。无论如何有一些反向链接,我不想放松,但我对nginx不是那么熟悉...那么从旧网址样式重定向到新的最佳方法是什么?

我的心态配置如下:

server {
            listen 80;
            server_name domain.org;

            location / {
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header HOST $http_host;
             proxy_set_header X-NginX-Proxy true;

            proxy_pass http://10.240.0.2:2368;
            proxy_redirect off;
            }
    }

应该添加什么?我想我需要新的位置,但它应该是什么样的?

2 个答案:

答案 0 :(得分:2)

我建议使用地图:

map $uri $redirect_topic {
    "~^/\d{4}/\d{2}/(?<topic>.*)" $topic;
}

server {
    listen 80;
    server_name domain.org;

    if ($redirect_topic) {
        return 301 $scheme://$host/$redirect_topic;
    }

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://10.240.0.2:2368;
        proxy_redirect off;
    }
}

答案 1 :(得分:1)

我认为你应该加入server部分:

rewrite ^/[0-9]*/[0-9]*(/.*) $1 last;

但如果你有任何额外的请求,可能会更好location部分(正如你所写)。

关于更多信息,请参阅the official nginx documentation