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

问题描述 投票:0回答:1

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

我想将所有博客文章(301)重定向到相同的URL,但没有.html

例如:

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

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

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

rewrite ^/blog/post1.html$ https://www.mydomain.co.uk/blog/post1 permanent;
nginx redirect http-status-code-301
1个回答
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是位置正则表达式上捕获的字符串。

尝试一下,让我知道它是否在您的环境中有效。

© www.soinside.com 2019 - 2024. All rights reserved.