Nginx Googlebot 重写规则失败,出现 404

Nginx Googlebot 重写规则失败,出现 404

我们的网站基于 Angular,这使得它几乎完全基于 JavaScript,因此我们需要向 Googlebot 提供静态 HTML 快照,以便它抓取我们。目前,我们有以下实现:

location / {
    # Rewrite rules for the Google and Bing bots and other crawlers.
    # Serves static HTML from /snapshots when a URL is requested
    if ($http_user_agent ~ (Googlebot|bingbot|Screaming)) {
        rewrite ^/(.*)$ /snapshots/$1.html break;
    }
}

这在大多数情况下都有效,但是如果 Google 请求这样的 URL:http://site.com/support/contact/它将被重写为:http://site.com/support/contact/.html这显然会返回 404。我需要更改配置以删除 URL 末尾的正斜杠,以确保返回以下内容:http://site.com/support/contact.html

如何在 nginx 配置中实现这一点?由于这个原因,我们在网站管理员工具中看到了数百个 404 错误。

谢谢!

答案1

如果你将重写内容更改为

rewrite ^/(.*)/$ /snapshots/$1.html break;
rewrite ^/(.*)$ /snapshots/$1.html break;

那么第一行将仅匹配以斜杠结尾的行,并将$1包含完整路径减去前斜杠和尾斜杠。第二行将捕获其余的情况(目前正在运行)。

相关内容