Назад | Перейти на главную страницу

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 в Инструментах для веб-мастеров.

Спасибо!

Если вы измените свою перезапись на

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

тогда первая строка будет соответствовать только строкам, оканчивающимся косой чертой, и $1 будет содержать полный путь без начальных и конечных косых черт. Второй поймает остальные дела (которые сейчас работают).