web-dev-qa-db-ja.com

ホームページと末尾のスラッシュの正規URL

私のホームページは次のようにリンクされる可能性があります。

http://example.com
http://example.com/
http://example.com/?ref=1
http://example.com/index.html
http://example.com/index.html?ref=2

(the same page is served for all those URLs)

GoogleがそれらのURLを別のページと見なさないように、標準URLを定義することを考えています。

<link rel="canonical" href="/" /> (relative)
<link rel="canonical" href="http://example.com/" /> (trailing slash)
<link rel="canonical" href="http://example.com" /> (no trailing slash)

どちらを使用する必要がありますか?私はただ/を平手打ちしますが、標準的な操作をいじるのは恐ろしいビジネスのように思えるので、最初に二重チェックが必要でした。

ホームページの正規のURLを定義することはまったく良い考えですか?

13
serg

RFC 2616(HTTP/1.1)、セクション3.2.2 によると、URL http://www.example.comhttp://www.example.com/は同等であり、HTTPクライアントは送信前に前者を後者に正規化する必要がありますサーバーへのリクエスト:

「abs_pathがURLに存在しない場合、リソースのRequest-URIとして使用する場合、「/」として指定する必要があります( section 5.1.2 )。」

セクション5.1.2には次のように記載されています。

「絶対パスを空にすることはできません。元のURIに何も存在しない場合は、「/」(サーバールート)として指定する必要があります。」

RFC 3986(URI Generic Syntax) は、これを セクション6.2.3、スキームベースの正規化 で確認します。

「たとえば、「http」スキームはオーソリティコンポーネントを使用し、「80」のデフォルトポートを持ち、「/」に相当する空のパスを定義するため、次の4つのURIは同等です。

    http://example.com
    http://example.com/
    http://example.com:/
    http://example.com:80/

一般に、空のパスを持つ権限に汎用構文を使用するURIは、「/」のパスに正規化する必要があります。同様に、ポートが空またはスキームのデフォルトである明示的な「:port」は、ポートとその「:」デリミタが省略されているため、スキームベースの正規化によって削除する必要があるものと同等です。たとえば、上の2番目のURIは「http」スキームの標準形式です。

技術的には、RFC 3986セクション6.2.3で説明されている正規化は、たとえばRFC 2616では、実際にHTTPリクエストを送信したいクライアントに必須となっていますが、単にURLのインデックスを作成します。それでも、標準ではそのような正規化が許可されており、検索エンジンが通常意図的にインデックスに重複を追加することを望まないことを考えると、ほぼすべての検索エンジンがこれらすべてのURLが同じになるように正規化することを確認してください。

したがって、http://www.example.comを使用する場合でもhttp://www.example.com/を使用する場合でも、ブラウザまたは検索エンジンには違いはありません。それらは同等です。

13
Ilmari Karonen