このページには 2 つのことが書いてあります。
| やりたいこと | 読む節 |
|---|---|
Siteon のホスティングで公開しているサイトを、お店のドメイン(www.example.jp)で見せたい | 独自ドメイン |
フォームを送ると 403・origin_not_allowed になる。フォームを置くサイトのドメインを登録したい | フォームの許可ドメイン |
Siteon のホスティングで独自ドメインが有効になると、そのドメインは許可ドメインにも自動で入ります。ほかのホスティング(Cloudflare Pages・Vercel など)にフォームだけを置く場合は、許可ドメインだけを設定します。
独自ドメイン 近日
独自ドメインの受け付けは準備中です 近日。この節は、受け付けを始めたときの手順です。それまでは
https://<名前>.siteun.com/で公開できます。
お店のドメインで公開するときは、www.example.jp を本体(主ドメイン)にし、example.jp(www の無い形)は www へ転送します。
前提
- そのサイトが 有料プラン であること。使える数は Lite 1・Standard 3・Business 10 です。
www.example.jpとexample.jpの組で 1 つと数えます。Free では使えません(plan_required) - そのサイトで ホスティングを有効 にしていること(
siteon hosting enable。ホスティングと配信) - 管理画面で操作できるのは、そのサイトのオーナーです。API キー(CLI・MCP)では権限
domains:writeが要ります。この権限は既定では付かないので、鍵の発行のときに明示して選びます(siteon login --scopes +domains:write) - ドメインの DNS を自分で編集できること。ドメインを買った会社(レジストラ)と、DNS を編集する場所が違うことがあります。ネームサーバーが向いている先 で編集します
- 申請はアカウント全体で 1 日 5 件までです(日本時間の日付で数えます)
手順
- 管理画面のサイドバーの「公開」を開き、「独自ドメイン」の欄に
www.example.jpを入れて「追加」を押します(CLI ではsiteon domains add www.example.jp --site <サイトID>) - 画面に出る 2 つのレコード(
TXTとCNAME)を、ドメインの DNS に追加します(入れるレコード) - 待ちます。Siteon が 5 分ごとに DNS と証明書を自動で確かめ、そろえば状態が「有効」になり、そのドメインで表示されます。管理画面の「公開」を開き直すと、その場でもう一度確かめます(CLI では
siteon domains status) example.jp(www の無い形)をwww.example.jpに転送します(www の無い形)
申請から 72 時間たっても確かめられないと、その申請は取り消されます(状態が「失敗」になります)。その場合はもう一度追加します。
入れるレコード
www.example.jp を申請したときに入れるのは次の 2 つです。値は申請ごとに変わるので、必ず画面(または CLI・API の応答)に出たものをそのまま 写します。
| 種類 | 名前(ホスト名) | 値 |
|---|---|---|
TXT | _sitekit-verify.www.example.jp | sitekit-verify= で始まる、画面に出た値 |
CNAME | www.example.jp | cname.siteun.com |
- TXT は所有の確認です。 申請のたびに必要で、値は申請ごとに変わります。有効になった後も 消さないでください。Siteon は有効になった後も 5 分ごとに確かめていて、TXT が無くなると、そのドメインでの表示がすぐに止まります(許可ドメインからも外れます)
- CNAME は配信先です。
www.example.jpに今あるレコード(A・AAAA・別のCNAME)は、CNAME と同時には置けません。消してから CNAME を入れます。CNAME を切り替えた時点で前のサイトは見えなくなり、証明書が発行されるまでの数分ほどはhttps://で開けないことがあります。先に TXT を入れ、アクセスの少ない時間に CNAME を切り替える と、止まる時間を短くできます - DNS の画面の多くは、名前の欄の後ろにドメイン名(
.example.jp)を自動で付けます。その場合はwwwと_sitekit-verify.wwwだけを入れます。www.example.jpと入れるとwww.example.jp.example.jpになってしまいます - メール(
MX)など、www以外のレコードには触りません - 日本語のドメインは、
xn--で始まる形(Punycode)で申請し、DNS にもその形で入れます
入れた後は、次のコマンドで DNS に出ているかを確かめられます。
dig +short CNAME www.example.jp # cname.siteun.com. と出れば OK
dig +short TXT _sitekit-verify.www.example.jp # 画面と同じ値が出れば OKDNS の入れ方の例
画面の名前やメニューの位置は、各社の変更で変わることがあります。どの会社でも、DNS レコードの設定画面で「種類 CNAME・ホスト名 www・値 cname.siteun.com」と「種類 TXT・ホスト名 _sitekit-verify.www・値 画面に出た値」の 2 行を足す ことに変わりはありません。
- Cloudflare — ドメインの「DNS」→「Records」で「Add record」。CNAME は Name
www・Targetcname.siteun.com、Proxy status は「DNS only」(灰色の雲)にします。TXT は Name_sitekit-verify.www・Content に画面の値 - お名前.com — お名前.com Navi の DNS 関連機能(「DNS 設定」・「DNS レコード設定」)で、ホスト名
www・TYPECNAME・VALUEcname.siteun.comと、ホスト名_sitekit-verify.www・TYPETXT・VALUE 画面の値を追加します。ネームサーバーがお名前.com のものになっているときに使える画面です - ムームードメイン — 「ムームー DNS」のカスタム設定で、サブドメイン
www・種別CNAME・内容cname.siteun.comと、サブドメイン_sitekit-verify.www・種別TXT・内容 画面の値を追加します - Xserver ドメイン — ドメインの「DNS レコード設定」で、ホスト名
www・種別CNAME・内容cname.siteun.comと、ホスト名_sitekit-verify.www・種別TXT・内容 画面の値を追加します。ネームサーバーをレンタルサーバー(エックスサーバーなど)に向けている場合は、そちらの DNS レコード設定で行います - さくらのドメイン — 会員メニューのドメインの「ゾーン編集」で、エントリ名
www・種別CNAME・値cname.siteun.com.(末尾にドットが要る画面があります)と、エントリ名_sitekit-verify.www・種別TXT・値 画面の値を追加します - Squarespace(旧 Google Domains) — ドメインの「DNS」設定のカスタムレコードで、Host
www・TypeCNAME・Datacname.siteun.comと、Host_sitekit-verify.www・TypeTXT・Data 画面の値を追加します
Cloudflare でプロキシ(オレンジの雲)をオンにすると、www.example.jp へのアクセスはお客様側の Cloudflare の設定を通ってから Siteon に届くため、証明書の発行や確認がうまく進まないことがあります。Siteon は Cloudflare を通して配信と証明書を用意するので、プロキシをオンにする必要はありません。
www の無い形(example.jp)
example.jp は、普通の DNS では CNAME を置けません(ドメインそのもの=apex には CNAME を置けない決まりのため)。次のどちらかで www.example.jp に転送します。
A. CNAME flattening(ALIAS・ANAME)が使える DNS の場合
- 先に
www.example.jpを追加しておきます(主ドメインが無いままexample.jpだけを追加すると、転送先が無く404になります) example.jpも追加します。www.example.jpと合わせて 1 つと数えるので、枠は増えません。自動で「メインへ転送」になります- 画面に出る
TXT(_sitekit-verify.example.jp)と、apex(名前の欄は@か空欄)のCNAME→cname.siteun.comを入れます。apex に今あるA・AAAAは消します(MXとTXTは残せます) - 有効になると、
https://example.jp/…はhttps://www.example.jp/…に転送されます(パスとクエリはそのまま)
Cloudflare は apex の CNAME を標準で flattening するので、この方法が使えます。ほかの会社は、ALIAS・ANAME などの対応を各社の案内で確かめてください。
B. レジストラの URL 転送を使う場合
DNS の会社の「URL 転送」(ウェブ転送・転送設定など)で、example.jp を https://www.example.jp に転送します。Siteon には example.jp を追加しません(枠も使いません)。転送の仕組みは各社のものなので、https://example.jp で開いたときに証明書のエラーが出ないか、パスが引き継がれるかは、その会社の仕様によります。
www を使わず example.jp を本体にすることもできます(追加のときに主ドメインに指定する。CLI では --primary)。ただし、DNS の制約が少ない www を本体にするのをおすすめします。
状態の意味
| 状態(API の値) | 意味 | 次にすること・待ち時間の目安 |
|---|---|---|
受付中(requested) | 申請を受け付け、配信の準備をしている | 待つだけ。通常は数秒〜数分で「DNS の設定待ち」になる |
DNS の設定待ち(pending_dns) | CNAME か TXT がまだ確かめられない | 2 つのレコードを入れる。入れてから DNS に反映されるまで数分〜数時間(DNS の会社と TTL による)。その後の 5 分ごとの確認で進む |
証明書の発行待ち(pending_ssl) | DNS は確かめられ、https:// の証明書を発行している | 待つだけ。通常は数分〜数十分 |
有効(active) | このドメインで表示している。許可ドメインにも自動で入っている | TXT と CNAME を消さない。5 分ごとの確認が通るたびに 72 時間延びる |
失敗(failed) | 申請から 72 時間以内に確かめられず、申請が取り消された | もう一度追加する(TXT の値は新しくなるので、古い TXT を新しい値に入れ替える) |
- 「有効」の後に TXT や CNAME が消えると、すぐに「DNS の設定待ち」に戻り、そのドメインでの表示が止まります(許可ドメインからも外れます)。レコードを戻せば、申請し直さなくても次の確認で「有効」に戻ります
- Siteon 側や Cloudflare 側の一時的な障害で確かめられないときは、表示を止めません(最後に確かめられてから 72 時間まで)
- 待ち時間は目安です。DNS の反映が遅い会社では、半日ほどかかることもあります
削除と主ドメインの変更
- 削除 — 管理画面の「公開」→「独自ドメイン」で「削除」(CLI では
siteon domains remove www.example.jp --yes)。そのドメインでの表示はすぐに止まり、元に戻せません。もう一度使うには、追加と DNS の確認をやり直します(TXT の値も新しくなります)。枠が空くのは、Siteon 側の後片付けが終わってから(通常は数分)です。不要になった DNS のレコードは自分で消します。主ドメインを消すと、転送にしているドメイン(example.jp)は転送先が無くなり404になります - 主ドメインの変更 —
siteon domains primary <ドメイン> --yes(MCP ではdomains_primary)。有効になっているドメインを主にします。ほかのドメインはすぐに新しい主ドメインへ転送され、ページの正規 URL(canonical)も変わります - 独自ドメインが主ドメインとして有効な間も、共通サブドメイン(
<名前>.siteun.com)は表示を続けます。ただし検索に載らない設定(noindex)になり、正規 URL として独自ドメインを示します
エラー
管理画面では日本語の説明が、CLI・API・MCP では error にコードが出ます。
| コード | 意味 | 直し方 |
|---|---|---|
plan_required(402) | そのサイトのプランでは独自ドメインを使えない(Free) | そのサイトを有料プラン(Lite から)にする |
quota_hostnames(402) | プランの枠を使い切っている(limit と used が返る) | 使っていないドメインを削除するか、プランを上げる。削除した直後は、後片付けが終わるまで数分ほど枠に数えられる |
invalid_hostname(400) | ドメインの形が違う(reason が bad_format)、または siteun.com のドメインを入れた(base_domain) | www.example.jp の形で入れる。https://・末尾の /・パスは付けない。使える文字は英小文字・数字・ハイフン(日本語ドメインは xn-- の形) |
hostname_blocked(400) | ブランド名と、ログイン・認証などの語を組み合わせたドメイン(なりすましに使われやすい形)は登録できない | 別のドメインを使う |
hostname_reserved(409) | そのドメインは別のアカウントが申請中か、使っている(申請中なら reserved_until に期限) | 自分のドメインなら、期限(申請から 72 時間)が過ぎてから申請する。期限が出ないとき(ほかで有効になっている)は Siteon に問い合わせる |
hostname_in_use(409) | 同じアカウントの別のサイトに登録されている(site_id) | そのサイトで削除してから追加する |
too_many_domain_requests(429) | 申請はアカウント全体で 1 日 5 件まで | 翌日(日本時間の日付が変わってから)申請する |
hosting_disabled(409) | そのサイトでホスティングを有効にしていない | 先に siteon hosting enable |
billing_inactive(402) | 支払いが確認できない | 管理画面の請求を確かめる |
account_held / transferring(409) | アカウントの公開が止められている / サイトの移管の手続き中 | 停止の連絡メールを確かめる / 移管が終わってから行う |
hostname_not_live(409) | 主にしようとしたドメインが「失敗」か削除済み | 追加からやり直す |
site_changed(409) | 別の操作と重なった | 状態を読み直してから、もう一度行う |
insufficient_scope(403) | API キーに domains:write が無い | domains:write を付けた鍵を発行し直す(siteon login --scopes +domains:write) |
confirmation_required(400) | API キーでの削除・主ドメインの変更に確認が付いていない | 人に確かめてから confirm: true(CLI では --yes)を付ける |
フォームの許可ドメイン
許可ドメイン(API では allowed_origins)は、そのサイトのフォームを置いてよいページのドメイン の一覧です。ここに無いドメインのページから送られたお問い合わせは受け付けません。ほかの人が自分のサイトにあなたのフォームを置いて、受付の件数を使ってしまうのを防ぐためです。サイトのページビューの計測も同じ一覧で判断します。
- 管理画面: サイトの「設定」→「ドメイン・サイト名」の「フォームを受け付けるドメイン」。1 行に 1 つ書いて「保存する」。変えられるのはそのサイトのオーナーです。保存するとすぐに効きます
- 管理画面では
https://を省けます(localhostはhttp://とみなします)。パスを書いても、ドメインの部分だけが登録されます - 登録できるのは 20 個までです
- 完全に一致したものだけ を受け付けます。
https://www.example.jpとhttps://example.jpは別なので、両方で使うなら両方入れます。http://とhttps://、ポート番号の違いも別です。*のようなワイルドカードは使えません(Cloudflare Pages のプレビュー URL<ハッシュ>.<プロジェクト>.pages.devのように毎回変わるものは、それぞれ入れるか、固定のプレビュー URL を使います) Originの付かない送信(curl・サーバーからの送信)は、許可ドメインに関係なく受け付けます
自動で入るドメイン
次の 2 つは、一覧に書かなくても受け付けます(一覧の欄には出ません)。
- Siteon のホスティングの共通サブドメイン(
https://<名前>.siteun.com) - 「有効」になっている独自ドメイン(
https://www.example.jp、転送にしているhttps://example.jpも)。有効でなくなると自動で外れます。いま入っているものはsiteon domains statusのauto_originsで確かめられます
Free で入れられるドメイン
Free のサイトに入れられるのは、開発・プレビュー用のドメインだけです。それ以外(独自ドメイン)を入れると 402 upgrade_required になります。そのサイトを有料プランにしてから入れます。
localhost
127.0.0.1
*.pages.dev
*.vercel.app
*.netlify.app
*.github.io
*.workers.devここでの *.pages.dev は「この形のものなら登録できる」という意味です。受け付けるのは、一覧に入れた個々のドメインだけです。
API で変える
API キー(権限 sites:write)で、サイトの許可ドメインを まるごと置き換え ます。送った一覧がそのまま新しい一覧になるので、今の一覧(GET で読めます。権限 sites:read)に足した形で送ります。
curl -X PATCH "https://cdn.siteon.dev/v1/accounts/<アカウントID>/sites/<サイトID>" \
-H "Authorization: Bearer stk_..." \
-H "Content-Type: application/json" \
-d '{"allowed_origins":["https://www.example.jp","https://example.jp","https://my-shop.pages.dev"]}'- 1 つずつ
https://www.example.jpの形で書きます。末尾の/・パス・大文字は使えません(400)。21 個以上も400です - 本人の鍵(
siteon loginで作ったもの)では、アカウントのオーナーか管理者である必要があります - Free のサイトに開発用でないドメインを送ると
402 upgrade_requiredです
403 origin_not_allowed の直し方
次のどちらかが出ているときは、フォームを置いたページのドメインが許可ドメインに入っていません。お問い合わせは保存されず、件数にも数えられません。
- フォームに「送信できませんでした」と出て、ブラウザの開発者ツールのコンソールに CORS のエラー(
Access-Control-Allow-Originが無い、など)が出る。Siteon の script からの送信は、ブラウザが送る前の確認(プリフライト)で止めるので、送信そのものが行われません - 自分で書いた送信処理(
fetch・素の<form>の送信など)で、応答が403の{"ok":false,"error":"origin_not_allowed"}になる
- フォームを置いたページを開き、開発者ツールのコンソールで
location.originを実行して、ページのドメインを正確に調べます(例:https://www.example.jp) - 管理画面の「設定」→「ドメイン・サイト名」の「フォームを受け付けるドメイン」と見比べます。
wwwの有無・httpとhttps・ポート番号まで一致しているかを確かめます - 無ければ追加して保存します。保存するとすぐに効くので、ページを読み込み直してもう一度送ります
- 追加できないとき
- 「本番のドメインは有料プランで使えます」(
402 upgrade_required)— Free のサイトです。そのサイトを有料プランにしてから追加します - 「ドメインは20個までです」— 使っていないものを消します
- 「本番のドメインは有料プランで使えます」(
- Siteon のホスティングの独自ドメインなら、一覧に足さなくても、「有効」になれば自動で入ります。「DNS の設定待ち」などのままなら、状態の意味 を見て、ドメインのほうを直します
AI エージェントがこのページを使うとき
人に「独自ドメインを設定して」「フォームが 403 になる」と頼まれたときの手順です。MCP の操作は準備中です 近日(それまでは管理画面での手順を人に案内します)。
独自ドメインを頼まれたら
- 人に確かめる: 使うドメイン(
www.example.jpの形)、そのドメインの持ち主であること、DNS を編集できる会社(Cloudflare・お名前.com など)、そのサイトが有料プランでホスティングを有効にしていること。持ち主でないドメインは申請しない domains_add(site・hostname: "www.example.jp")を呼ぶ。鍵にdomains:writeが無ければinsufficient_scopeになるので、人にsiteon login --scopes +domains:writeで鍵を作り直してもらう- 応答の
dns.txt(name・value)とdns.cname(name・target)を、値を変えずにそのまま 人に見せる。人の DNS の会社に合わせて、名前の欄に入れる形(_sitekit-verify.wwwとwww)も添える(入れるレコード・入れ方の例)。Cloudflare なら「DNS only」にすることも伝える。expires_at(72 時間後)までに入れるよう伝える - 応答に
next_stepsがあれば、このページよりnext_stepsに従う - 人が「入れた」と言ったら
domains_statusを呼ぶ(呼んだときにその場で確かめる)。続けて呼ぶときは 1〜5 分あける - 状態ごとの次の一手(状態の意味)
requested— 少し待ってもう一度domains_statuspending_dns—last_check_detailを見る。txtがmismatch/nxdomainなら TXT の名前・値の写し間違い、cfがokでもcf_statusがactiveでなければ CNAME が向いていない。digの結果を人に見てもらう。入れて間もないなら DNS の反映を待つpending_ssl— 待つ(数分〜数十分)active— 完了。https://www.example.jp/を開いて確かめるよう伝える。TXT と CNAME を消さないよう伝えるfailed— 72 時間を過ぎた。人に確かめてからdomains_addをやり直し、新しい TXT の値 に入れ替えてもらう
wwwの無い形を聞く(www の無い形)。DNS が CNAME flattening(Cloudflare など)に対応していれば、wwwが追加済みであることを確かめてからdomains_add(hostname: "example.jp")。対応していなければ、レジストラの URL 転送でhttps://www.example.jpへ転送するよう案内する- エラーは
errorのコードで エラー を引く。domains_remove・domains_primaryは、何が起きるかを人に伝えて明示の同意を得てからconfirm: trueで呼ぶ
フォームが 403 になると言われたら
- 症状が
403・origin_not_allowed、またはコンソールの CORS のエラーかを確かめる(直し方)。429・400なら別の原因(よくあるエラーと対処) - フォームを置いたページの正確なドメイン(
location.origin)を人に教えてもらう list_sitesでそのサイトのallowed_originsを読み、完全に一致するものがあるかを見る(wwwの有無・http/https・ポート)- 無ければ、人に管理画面の「設定」→「ドメイン・サイト名」で追加してもらう。API で足すときは、人に確かめてから、今の一覧に足した全体を
PATCH(API で変える)。Free のサイトに独自ドメインは入れられない(upgrade_required)ので、有料プランが要ることを伝える - Siteon のホスティングの独自ドメインなら、許可ドメインには足さずに
domains_statusで状態を確かめる(有効になれば自動で入る)