IT実践

XMLサイトマップをGoogle Search Consoleに準拠

  • このエントリーをはてなブックマークに追加
  • LINEで送る

インデックス登録されましたが、サイトマップに送信していません

Google Search Consoleのカバレッジで緑色の有効(インデックスに登録されている)になっているものの、「インデックス登録されましたが、サイトマップに送信していません」という詳細情報が気になりました。

クリックしてみると「例」としてURL一覧が表示されます。
そのURLをさらにクリックすると、UTF-8でエンコードされたURLが表示されます。
送信しているXMLサイトマップもUTF-8でエンコードをしていますし、URLの正規化も済んでいるのになぜ?
じっくりと見比べてみると、XMLサイトマップのURLはスラッシュが「%2F」にパーセントエンコーディングされているのに対して、Googleでは「/」のままです。

サイトマップを出力しているphpソースを見てみると、PATH_INFOをrawurlencodeでエンコードしています。
rawurlencodeはRFC3986にもとづいて「-_.~」とアルファベット以外をすべてエンコードするようですので妥当なはずです。
Google独自仕様?と思ったのですが、RFC3986の3.4章「スラッシュ (“/”) と疑問符 (“?”) の文字はパーセントエンコーディングする事を避けるほうがユーザビリティのためにはよい。」という記述がありました。

スラッシュはパーセントエンコードしないように修正

GoogleもRFCもスラッシュはパーセントエンコードしないと提唱しているのであれば、これに合わせるべきだと思い以下のように修正しました。

$r_page = rawurlencode($page);
$r_page = str_replace('%2F', '/', $r_page);

修正後、XMLサイトマップの出力とGoogle Search ConsoleのURLを比較するとマッチしていましたので、これで解決です。

関連記事