web-dev-qa-db-ja.com

NginxGooglebotの書き換えルールが404で失敗する

私たちのサイトはAngularに基づいているため、ほぼ完全にJavaScriptベースになっているため、Googlebotをクロールするには、静的HTMLスナップショットをGooglebotに提供する必要があります。現時点ではこの実装があります。所定の位置に:

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エラーが発生しています。

ありがとう!

2
Tyler Alex

書き換えをに変更した場合

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

その場合、最初の行はスラッシュで終わる行にのみ一致し、$1には、先頭と末尾のスラッシュを除いたフルパスが含まれます。 2つ目は、残りのケース(現在機能している)をキャッチします。

2
Flup