nginx 重定向 url 到新模式

nginx redirect url to new pattern

我目前正在将我的博客从 Wordpress 切换到 Ghost。 ghost前面有nginx。 迁移后我认识到旧 urls

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

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

所以日期不见了。无论如何,有一些我不想松开的反向链接,但我对 nginx 不太熟悉......那么从旧 url 样式重定向到新样式的最佳方法是什么?

我当前的配置如下:

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

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

我认为你应该在 server 部分中输入:

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

但是,如果您有任何其他要求,在 location 部分(如您所写)可能会更好。

更多信息见the official nginx documentation

我建议使用地图:

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