在Nginx中创建一个301重定向,从某些URL路径中删除“.html”结尾?

在Nginx中创建一个301重定向,从某些URL路径中删除“.html”结尾?,nginx,redirect,http-status-code-301,Nginx,Redirect,Http Status Code 301,如何在Nginx中创建301重定向,以删除某些URL结尾的.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,并保留其余的站点路径 我设法为每个帖

如何在Nginx中创建301重定向,以删除某些URL结尾的
.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;
仅对于博客子路径,这也应该有效:

location ~ ^/blog/(.*)\.html$ {
    return 301 https://$host/blog/$1;
}
我们应该做到这一点

~意思是正则表达式

^美元表示正则表达式的开始和结束

(*)表示捕获任意数量的未定义字符(.means indefined*表示任意数量)

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

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


试试它,让我知道它是否在您的环境中工作。

这是否只适用于“/blog/”firectory?不,它适用于以.html结尾的任何内容。对于仅使用/blog/,请将^/blog/(.*)\.html$设置为正则表达式,并返回/blog/$1;
location ~ ^/blog/(.*)\.html$ {
    return 301 https://$host/blog/$1;
}