& サイトマップリンクでは、正しいですか?


17

簡単な質問です。念のためにお願いします。

Googleサイトマップジェネレーターは、次のようなリンクを含むsitemap.txtファイルを生成しました。

http://www.domain.com/category.htm?name=some-name&cat_id=8

&代わりにこれらのリンクでを使用するのは正しい&ですか、それともサイトマップジェネレータによって行われたエラーですか?

ありがとう。

回答:


11

それは正しいです。これはアンパサンド(&)のHTMLエンティティであり、適切にエンコードされたURLでの適切な文字表現です。アンパサンド(&)および<and >は、XMLおよびHTMLの特殊文字であり、特殊文字エンティティを使用して表示する必要があります。


すべてのアンパサンドをエンティティエスケープする必要がありますか?これは、クエリ文字列のパラメータを分離するためだけのものだと思いました。私はいつもパーセントエンコーディングを(使用して自分のファイルやフォルダ名内またはパラメータにアンパサンドをエスケープしました%26):例えばhttp://foo/a%26r.php?foo=1&amp;genre=r%26b
Lèsemajesté

パーセントエンコーディングが有効かどうかわからないので、確実に言えません。
ジョンコンデ

@Lèse-XMLドキュメントであるため、CDATAノードを使用する場合を除き、エスケープする必要があります(bdadamが同じことを言ったことに気付きましたが、私よりもずっと早いです)
Mark Henderson

>厳密にXMLでエンコードされたエンティティである必要はありません。
MrWhite 14

6

サイトマップファイルはUTF-8でエンコードされている必要があります(通常、ファイルを保存するときにこれを行うことができます)。すべてのXMLファイルと同様に、すべてのデータ値(URLを含む)は、文字にエンティティエスケープコードを使用する必要があります。

これが役立つ場合があります、http://sitemaps.org/protocol.php


残念ながら、このリンクは現在無効です。
mtness


2

Googleは、URLに&文字が含まれている場合、サイトマップが破損しているとして拒否します。&を&amp;に置き換えたときに受け入れられます。

ただし、後でGoogleウェブマスターツールでクロールエラーのリストを確認すると、&amp;が含まれているため、サイトマップファイルのこのURLが壊れていると報告されます。の代わりに &。

したがって、正しい解決策は、&を含まないようにURLを変更することです。または、これをバグとしてGoogleに報告してください。


1

URLエンコーディングとXMLエンティティエンコーディングは同じものではありません。URLの特殊文字(クエリパラメーターの分離にのみ使用できる&など)を置き換えるには、URLエンコードが必要です。XMLエンティティエンコーディングは、XML(XHTML)の特殊文字をエンコードするためのものです。これは、XML(またはXHTML)ファイルにURLがあり、このURLに&文字が含まれている場合、それを&amp;にエンティティエンコードする必要があることを意味します。したがって、sitemap.xmlには、Marco Demaioからの質問のようなURLがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.