Наш сайт основан на 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
будет содержать полный путь без начальных и конечных косых черт. Второй поймает остальные дела (которые сейчас работают).