2015-10-06 2 views
0

Я в настоящее время переключая свой блог с Wordpress на Ghost. Существует nginx перед призраком. После миграции я признал, что старые URL-адресаnginx redirect url к новому шаблону

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

переносится как

http://domain.org/some-topic 

Так дата ушла. Во всяком случае, есть некоторая обратная связь, которую я не хочу потерять, но я не очень хорошо знаком с nginx ... Итак, каков наилучший способ перенаправления из старого стиля url в новый?

Моя curent конфигурация выглядит следующим образом:

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

Я бы рекомендовал использовать карту:

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

Спасибо, выглядит обещанием. Я должен проверить это. Является ли функция карты включенной в nginx по умолчанию? – aholbreich

+0

Greate работает как шарм! нотация была для меня новой,;) – aholbreich

+1

Я рад, что вы сочли это полезным. :) Карты очень полезны и являются хорошим местом для использования регулярных выражений как [объяснено] (https://www.youtube.com/watch?v=YWRYbLKsS0I) автором. –

1

Я думаю, вы должны положить в server раздел:

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

Но если у Вас есть какие-либо дополнительные запросы, возможно, будет лучше в location секции (как вы написали).

О дополнительной информации см. На the official nginx documentation.

+0

Это решение переписывает internaly? Я думаю, что, может быть, в долгосрочной перспективе лучше отправить 301. – aholbreich

+0

Возможно, вы правы. У меня не было много времени, чтобы подумать над этим вопросом, и это была моя первая идея. – uzsolt

Смежные вопросы