在Nginx中创建301重定向,以删除以某些URL路径结尾的`.html`吗?

时间:2019-11-07 10:50:20

标签: nginx redirect http-status-code-301

如何在Nginx中创建301重定向,以删除某些网址中的.html结尾?

我想将所有博客文章(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

注意:我只想从www.mydomain.com/ 博客 /中删除html,并保留其余的网站路径。

我设法为每个帖子创建一个重定向,但是肯定有比这更好的方法:

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

1 个答案:

答案 0 :(得分:0)

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

仅对于博客子路径,这也应该起作用:

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

应该做到这一点。

〜表示正则表达式。

^和$表示正则表达式的开始和结束。

(。*)表示捕获任意数量的不确定字符(。表示indefined *表示任意数量)

和.html表示以.html结尾(哇)

然后将其全部重定向到https:// $ host / $ 1,其中host是通过的主机,$ 1是位置正则表达式上捕获的字符串。

尝试一下,让我知道它是否在您的环境中起作用。