First CH Appsサーバー処理を伴う小さなアプリ置き場

EN

First CH Apps / hreflang 相互参照チェック

hreflang 相互参照チェック

URLを入れると、そのページの hreflang アノテーション(<link rel="alternate"> と HTTP の Link ヘッダー)を抽出し、宣言先のページを実際に取得して返照が返っているかを確認します。自己参照・x-default の有無、言語/地域コードの妥当性(en-UK・jp のような誤り)まで一度に判定します。宣言先の実取得は10件までです。

canonical・title の合否は「メタタグ・SEO基本診断」、リダイレクトの段数は「リダイレクトチェーン追跡」が担当します。ここは「言語版どうしが互いを正しく指しているか」だけに絞っています。

日本語版・英語版のどちらのURLを入れても構いません(そのページを起点に相互参照を確認します)。

判定の基準

返照(return link): hreflang は相互に指し合う必要があります。AがBを宣言していてもBがAを宣言していなければ、その宣言は無視されます。ここでは宣言先のページを実際に取得して、こちらを指す hreflang があるかを確認します。

URLは完全一致で比べます。http と https、末尾スラッシュの有無、www の有無は別のURLです(その違いだけで一致した場合は「不一致」として挙げます)。

自己参照: 各ページは自分自身の hreflang も宣言する必要があります(欠けるとセット全体が無視されることがあります)。

x-default: 必須ではありませんが、どの言語にも当てはまらない利用者に出すページを指定することを推奨します。

言語コードは ISO 639-1(2文字)、地域コードは ISO 3166-1 alpha-2 で判定します。en-UK(英国はGB)・jp(言語コードではない)・en_US(区切りはハイフン)は要修正、fil のような3文字コードは要検討にします。

宣言先の実取得は10件までです(無料枠のサブリクエスト上限に収めるため)。超過分は「未検査」と明示します。

サイトマップ(xhtml:link)での指定は対象外です。ページのHTMLとHTTPヘッダーの宣言だけを見ています。

SERVER PROCESSING — サーバーへ送るもの・保存するもの

送るもの: 入力されたURLだけ。当社サーバー(Cloudflare Workers)がそのURLを公開GETで取得し、見つかった hreflang の宣言先を最大10件まで同じ方法で取得します。Cookieもログイン情報も送りません。

保存するもの: ありません。検証はリクエストの中だけで完結し、URL・結果ともデータベース(KV/D1)へ書き込みません。処理が終わった時点でメモリから消えます。

返すもの: 抽出した hreflang の値・宣言先URL・返照の判定だけです。取得したページの原文は再配信しません(このアプリは他サイトを閲覧するための中継として使えません)。宣言先のページは <head> を読むために先頭64KBだけを一時的に見ています。

注意: 取得は公開GETのみで、社内ネットワーク・localhost・プライベートIP宛のURLは受け付けません。JavaScriptで後から挿入される hreflang はサーバー側では見えません。

APIとして使う

POST /hreflang/api/check に JSON({"url": "https://example.com/"})またはフォームを送ると、同じ検証結果が JSON で返ります。