在 NGINX 中将错误的 URL 扩展名重写为 .html

在 NGINX 中将错误的 URL 扩展名重写为 .html

不久前,我写错了网址,Google 将它们缓存在旧站点地图中。这导致 WMT 中出现大量 404 错误,我需要通过彻底重写来清除这些错误。我目前使用地图模块并单独重写每个产品。

例子:

/product1html/ /product1.html;

此处的错误以粗体显示:http://域名/产品名称html/

这里的错误是我最初忘记了 html 之前的 . 而在末尾有一个 / 。

我怎样才能将 URL 重写为http://domain/productname.html看起来像的每个 URL /productnamehtml/

答案1

重写后将会像这样:

rewrite ^(.*[^.])html/?$ $1.html permanent;

或者你可能想把它放到一个位置:

location ~* ^(?<product>.*[^.])html/?$ {
    return 301 $product.html;
}

解释:两个正则表达式完全相同,只是后者有一个名为捕获product。我们寻找以非点结尾的任何序列,后跟html,后跟 (可选) /。 之前的所有内容html都会被捕获。

相关内容