サブドメインをやめて、サブディレクトリに変えた話
このサイトは最初、1つのドメインにサブドメインを切って、サイトごとに分ける構成で作るつもりだった。tools.example.com、loto.example.com のような形だ。
いまは全部サブディレクトリに入っている。/tools/、/loto/ だ。決めた理由が、調べ直したら成り立っていなかったので変えた。
最初の決定と、その理由
決めたときの記録にはこう書いてあった。
> 1ドメイン+サブドメイン構成。サイトごとにサブドメインを切る
> - AdSense審査が1回で済むため
> - 育ったサイトだけ独自ドメインに昇格させる(301で移行)
広告で運営費をまかなう前提なので、AdSenseの審査は避けて通れない。サイトを作るたびに審査を受けるのは面倒だから、1つのドメインにまとめて1回で済ませたい。理屈としては通っている。
調べたら、前提が違った
実際に申請の手順を調べていて、2つのことが分かった。
1つ目。AdSenseの「サイト」の管理単位はトップレベルドメインだった。2023年の仕様変更で、サブドメインを個別に追加・管理することはできなくなっている。サイト一覧には example.com が1行あり、そこに「○個のサブドメイン」と注記される。
つまり審査が1回で済むのは正しい。 ここは合っていた。
2つ目。それはサブディレクトリでも同じだった。example.com/loto/ でも loto.example.com でも、申請するのは example.com で、審査は1回。この理由は、2つの構成のどちらかを選ぶ根拠になっていなかった。
決定の理由が、選択肢を絞り込んでいなかった。「AがいいのはXだから」と書いてあったが、XはBにも当てはまっていた。
理由が消えると、不利なほうだけが残る
根拠が無くなってみると、サブドメインには不利な点だけが残った。
審査で見られるのは申請したドメインのトップページだ。サブドメイン側にいくらページがあっても、それが考慮されるという記載はどこにもない。考慮されない前提で設計するしかなく、そうするとルートドメインにそれ単体で審査を通せる中身が必要になる。
検索の評価も分散しやすい。 サブドメインは別サイトとして扱われることがある。個人が作る小さなサイトを、わざわざ分散させる理由がない。
昇格させるときの301リダイレクトも、サブディレクトリからで問題ない。サブドメインである必要はなかった。
決定の「理由」を書いていたから気づけた
この判断の記録は、こういう書き出しで始まるファイルに置いてある。
> 何をなぜそう決めたかの記録。覆すときは、ここに書いた理由がもう当てはまらないことを確認してから。
結論だけを書いていたら、たぶん気づかなかった。「サブドメイン構成にする」とだけ書いてあれば、そういうものとして進めていたと思う。
理由が書いてあったから、その理由を検証できた。そして検証したら崩れた。崩れたことを確認したうえで、構成を変えた。
覆した記録も同じファイルに残してある。「撤回:1ドメイン+サブドメイン構成」という見出しで、なぜ撤回したのかまで書いてある。次に誰かが(あるいは半年後の自分が)サブドメインに戻したくなったとき、一度検討して捨てた道だと分かるようにしている。
移してみて初めて分かったこと
実際にURLを移す作業をして、設計を変えないと気づけなかった不具合が2つ出た。
レイアウトが二重になった。 Next.jsではレイアウトが入れ子になる。ロト用のレイアウトを新しく作ったとき、サイト共通のレイアウトの中にもう一つヘッダとフッタが描画される状態になっていた。ビルドは通るし、画面にも表示される。壊れていないように見えてしまう。
生成されたHTMLを数えて気づいた。<h1> が1ページに2つ、ヘッダも2つ、フッタも2つ入っていた。
<h1> が全ページで同じだった。 これは移動とは別に見つかった問題で、各ページの見出しが <h2> から始まり、<h1> はレイアウトが出すサイト名だった。つまりどのページも <h1> が同じ文字列で、そのページが何の話なのかが構造として表現されていなかった。
ページ数が少ないうちに直せたのは運がよかった。
URL構造を変えるなら公開前に
この変更が安く済んだのは、まだ何も公開していなかったからだ。
公開後に同じことをすると、旧URLからの301リダイレクトを全部用意することになる。検索エンジンの再評価も待つ必要がある。ブックマークも切れる。
構成に迷いがあるなら、公開前に決着をつけたほうがいい。公開してからの変更は、技術的な作業よりも、後始末のほうが重い。
まとめ
- 決定と一緒に理由を書く。 理由が書いてあれば、後から検証できる
- 理由を検証したら崩れることがある。 崩れたなら、決定も崩れる
- 覆した記録も残す。 一度捨てた道だと分かるように
- URL構造の変更は公開前に。 後からだと後始末が高くつく