nginx перенаправляет /2013/04/test.html на /test - не работает

nginx перенаправляет /2013/04/test.html на /test - не работает

Я схожу с ума по этому поводу. Как мне перенаправить определенный URL-адрес /2013/04/test.htmlв /testnginx?

Я попробовал это: но не работает:

server {
     location /2013/05/test.html {
         return 301 http://$server_name/test;
     }
}

Я провел несколько тестов — по какой-то причине любой URL-адрес без расширения .html в части местоположения строки конфигурации будет перенаправляться правильно, но как только я помещаю .html в местоположение, бабах, все перестает работать.

Есть идеи, почему это так? Спасибо!

решение1

Вместо того чтобы иметь блок местоположения для каждого перенаправления, вы всегда можете просто добавить правила перезаписи в существующий блок местоположения:

rewrite /2013/05/test.html http://$server_name/test permanent;
rewrite /2013/05/test2.html http://$server_name/test2 permanent;

Вы также можете использовать различные регулярные выражения, чтобы избежать необходимости добавлять новое выражение каждый раз при добавлении новой «постоянной ссылки».

решение2

Я согласен с Джейсоном Илисичем, используяпереписать правиловероятно, было бы более эффективно.

Если вы действительно хотите использоватьблок местоположения, вы пробовали использовать модификатор "="? Если у вас несколько расположений, логика выбора Nginx может выбирать не то, что вы ожидаете.

Из документации Nginx

using the “=” modifier it is possible to define an exact match of URI and location

так например

server {
    location = /2013/05/test.html {
        return 301 http://$server_name/test;
    }
}

Связанный контент