Shopifyで"CNAMEレコードがありません"と表示される原因とその解決法(Cloudflare編)

Share
Shopifyで"CNAMEレコードがありません"と表示される原因とその解決法(Cloudflare編)
Photo by 傅甬 华 / Unsplash

はじめに

Shopifyで独自ドメイン(今回は shop.sakashita.page)を接続した際に、「CNAMEレコードがありません」というエラーが出続けて困った経験、ありませんか?

実際に私もこのエラーに直面し、Cloudflare側の設定を見直すことで解決したので、その詳細と原因、対処法をこの記事でまとめます。


結論:Cloudflareの"CNAMEフラット化"が原因だった!

Shopifyの管理画面でCNAMEレコードが正しく設定されているにもかかわらず警告が出る原因は、 Cloudflareの"CNAMEフラット化(CNAME Flattening)"という機能が有効になっていたからでした。

この機能が有効だと、CNAMEレコードの“名前”を返すのではなく、解決済みのIPアドレス(Aレコード)を返してしまうため、 Shopify側では「CNAMEが見つからない」と判断されてしまいます。


CNAMEフラット化とは?

CNAME(Canonical Name)レコードは、あるドメイン名を別のドメイン名に別名として割り当てる仕組みです。

例えば:

shop.example.com → shops.myshopify.com

このように“名前 → 名前”の関連を作るのがCNAMEですが、DNSの仕様上、ルートドメイン(apex domain)にはCNAMEを使えないという制約があります。

そこで登場するのがCNAMEフラット化です。

CloudflareのようなDNSサービスでは、ユーザーがCNAMEを設定していても、外部からの問い合わせに対してはIPアドレス(Aレコード)として返すことができます。 これにより、

  • ルートドメインでもCNAMEのような運用ができる
  • ブラウザのレスポンスが高速化する という利点があります。

ただし、“CNAMEがあるかどうか”をチェックするサービス(今回のShopifyなど)には、CNAMEが存在しないように見えてしまうというデメリットがあります。

メリット:

  • 高速な名前解決が可能
  • ApexドメインでもCNAME的な挙動を実現できる
  • 一部のCDNやクラウドサービスと相性が良い

デメリット:

  • CNAMEレコードがクライアントから見えない
  • Shopifyのように“CNAMEの存在”を前提とする仕組みと相性が悪い

私の設定環境|サブドメインのセットアップ

そもそもですがサブドメインのセットアップは正常に行われていることを確認してください。以下の公式ページを参考にしてください。

そして以下が私の設定環境です。

  • ドメインプロバイダー:Cloudflare
  • 使用ドメイン:shop.sakashita.page
  • Shopifyストアの接続先:shops.myshopify.com
  • DNSレコード:
    • shop サブドメインに CNAME を設定
    • CNAME先は shops.myshopify.com
    • プロキシ(オレンジの雲):オフ(DNSのみ)
    • それでも警告が消えない状態でした

試したこと一覧(すべて失敗)

  • Aレコードを使ってみる → Shopifyは動くが、警告は消えず
  • サポートに連絡 → 「www を使え」など的外れな回答
  • ローカルのDNSキャッシュ削除 → 解決せず

解決した方法

Cloudflareの設定画面にある以下の項目をオフにしました:

"すべての CNAME レコードの CNAME フラット化"

これをオフにすることで、DNSクライアントやShopify側からもCNAMEが明示的に見えるようになり、 即座にShopify管理画面上の警告が消えました。

成功画面のキャプチャ

フラット化ってそんなに悪いの?

実はそんなことはなく、通常のWebサイト運営では高速化や安定性のために有効な機能です。 ただし今回のように、「CNAMEの存在」を検出するシステムとの相性が悪いことがあるというだけ。


まとめ

  • Shopifyが"CNAMEがない"と表示するのはCNAMEレコードがないのではなく、見えていないだけの可能性がある
  • Cloudflareを使っている場合は"CNAMEフラット化"をオフにすることで解決できる
  • Shopifyサポートよりも自力で調査した方が早い場合も…(笑)

おまけ:技術的検証に使ったコマンド(Windows PowerShell)

# DNSキャッシュをクリア
Clear-DnsClientCache

# CNAMEレコードの確認
Resolve-DnsName shop.sakashita.page -Type CNAME

# Aレコードの確認
Resolve-DnsName shops.myshopify.com -Type A

この記事が役立つ人

  • Shopifyでカスタムドメインを使っていて、接続はできているのにエラーが出る人
  • Cloudflareを使ってDNSを管理している人
  • サポートに問い合わせたけど解決しなかった人

もしこの記事が役立ったら、ぜひシェアやブックマークをお願いします! あなたの時間を少しでも節約できますように ☕

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu