Nginx Regras de regravação do Googlebot com falha 404

2

Nosso site é baseado no Angular, o que o torna quase totalmente baseado em JavaScript, portanto, precisamos veicular instantâneos HTML estáticos no Googlebot para que ele nos rastreie. No momento, temos essa implementação em vigor:

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;
    }
}

Isso funciona na maioria dos casos, no entanto, se o Google solicitasse um URL como: http://site.com/support/contact/ , ele será reescrito em: http://site.com/support/contact/.html , que obviamente retorna um 404. Preciso alterar a configuração para remover barras no início fim de um URL, para garantir que isso seja retornado: http://site.com/support/contact.html

Como isso pode ser alcançado a partir da configuração do nginx? Estamos vendo centenas de erros 404 nas Ferramentas do Google para webmasters por causa disso.

Obrigado!

    
por Tyler Alex 26.07.2013 / 16:45

1 resposta

2

Se você alterar sua reescrita para

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

a primeira linha corresponderá apenas às linhas que terminam em uma barra e $1 conterá o caminho completo menos as barras iniciais e finais. O segundo vai pegar o resto dos casos (que estão funcionando agora).

    
por 26.07.2013 / 17:00