Создать перенаправление 301 в Nginx, которое удаляет окончание `.html` из определенных путей URL? - PullRequest
0 голосов
/ 07 ноября 2019

Как создать перенаправление 301 в Nginx, которое удаляет окончание .html с определенных URL-адресов?

Я хочу перенаправить все сообщения блога (301) на один и тот же URL-адрес, но без .html.

Например:

www.mydomain.com / blog / post1.html -> www.mydomain.com/blog/post1 www.mydomain.com/blog/post2.html -> www. mydomain.com/blog/post2

ПРИМЕЧАНИЕ. Я хочу удалить html только с www.mydomain.com/blog/ и оставить оставшиеся пути сайтов по мере ихявляются.

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

rewrite ^/blog/post1.html$ https://www.mydomain.co.uk/blog/post1 permanent;

1 Ответ

0 голосов
/ 07 ноября 2019
location ~ ^/(.*)\.html$ {
    return 301 https://$host/$1;
}

Только для подпутей блога, это также должно работать:

location ~ ^/blog/(.*)\.html$ {
    return 301 https://$host/blog/$1;
}

Должно помочь.

~ Означает регулярное выражение.

^ и $ означаетначало и конец регулярного выражения.

(. *) означает захват любого количества неопределенных символов (. означает неопределенное * означает любое число)

, а .html означает окончание .html (wow)

И затем вы перенаправляете все это на https://$host/$1, где host - хост, который прошел через, и $ 1 - захваченная строка в регулярном выражении местоположения.

Попробуйте и дайте мне знать, работает ли он вваше окружение.

...