簡単な質問です。念のためにお願いします。
Googleサイトマップジェネレーターは、次のようなリンクを含むsitemap.txtファイルを生成しました。
http://www.domain.com/category.htm?name=some-name&cat_id=8
これらのリンクで&
の代わりに&
を使用するのは正しいですか、それともサイトマップジェネレーターによって行われたエラーですか?
ありがとう。
それは正しいです。これはアンパサンド(&
)のHTMLエンティティであり、適切にエンコードされたURLでの適切な文字表現です。アンパサンド(&
)および<
および>
はXMLおよびHTMLの特殊文字であり、特殊文字エンティティを使用して表示する必要があります。
サイトマップファイルはUTF-8でエンコードされている必要があります(通常、ファイルを保存するときにこれを行うことができます)。すべてのXMLファイルと同様に、データ値(URLを含む)は、文字にエンティティエスケープコードを使用する必要があります。
これは役に立つかもしれません http://sitemaps.org/protocol.php
Googleは、URLに文字が含まれている場合、サイトマップが壊れているとして拒否します。 ampと交換するときに受け入れます。
ただし、後でGoogleウェブマスターツールでクロールエラーのリストを確認すると、ampが含まれているため、サイトマップファイルのこのURLが破損していると報告されます。の代わりに 。
したがって、正しい解決策は、URLが含まれないようにURLを変更することです。または、これをバグとしてGoogleに報告してください。
また、チェックすることで自分を納得させることができます
公式のxmlサイトマッププロトコルページに反論することはできません:)
URLエンコーディングとXMLエンティティエンコーディングは同じものではありません。クエリパラメータの分離にのみ使用できるようなURLの特殊文字を置き換えるには、URLエンコードが必要です。 XMLエンティティエンコーディングは、XML(またはXHTML)の特殊文字をエンコードするためのものです。これは、XML(またはXHTML)ファイルにURLがあり、このURLにいくつかの文字が含まれている場合、それをamp;にエンティティエンコードする必要があることを意味します。したがって、sitemap.xmlには、Marco Demaioからの質問のようなURLがあります。