【WordPress】robots.txtが404だった原因はパーマリンク。公開後47分の初期設定ログ

記事のアイキャッチ画像。WordPress公開後の初期設定でつまずいた話、初期設定の所要47分、つまずき3件、表示速度94から78 サイト構築

1本目で、レンタルサーバーを契約してWordPressサイトを公開するまでを書きました。ただし、サイトが表示された時点では、まだ公開できる状態ではありませんでした。

この記事は、その続きの47分の記録です。やったのは初期設定と法務ページ、そしてアクセス解析。地味な作業ですが、この中に順番を間違えると取り返しのつかないものが1つと、検索しても答えが出てこないつまずきが2つありました。

  • robots.txt が404を返し続けた。答えは「パーマリンクを保存する」だった
  • サイトのタイトルが80字を超え、メタディスクリプションが出力されていなかった
  • ペンネームで運営するとき、プライバシーポリシーに住所を書くのか
  • アクセス解析を「1本目の記事を書く前」に入れた理由

もう一つ。この記事を書くために表示速度を測り直したところ、1本目に書いた数字の前提が、1日で変わっていました。 そこも訂正として残します。

はじめにお伝えしておくこと

  • この記事にアフィリエイトリンクはありません。 内容がサーバー会社に依存しないためです。貼れるところに全部貼る、という書き方はしません
  • ただし1本目の記事にはアフィリエイト広告があります(サーバー会社と提携しています)。この記事から1本目へリンクしているので、先に書いておきます
  • 環境は ConoHa WING + WordPress + Cocoon(子テーマ)、作業日は2026年7月26日〜27日です。テーマもWordPress本体も更新で挙動が変わるので、手順そのものより確認の仕方を持ち帰ってもらうほうが確実です
  • 法律の話が1箇所出てきますが、解釈の最終判断は各自でお願いします。私は専門家ではなく、条文と公式の解説を読んで自分のサイトをどうしたかを書いているだけです

この記事が向く人・向かない人

向く人

  • WordPressを公開したが、robots.txt が404になる
  • Cocoonでメタディスクリプションが出力されない/タイトルが長すぎる
  • ペンネームでブログを運営したいが、法務ページの書き方で止まっている
  • アクセス解析をいつ入れるべきか迷っている

向かない人

  • 設定の最短手順だけを知りたい人。ここは判断理由と失敗を含んだ記録なので、遠回りです
  • SEOで上位を取る方法を探している人。この記事にあるのは測り方と、測った数字の扱い方だけです
  • 収益の話を読みたい人。このサイトはまだ1円も稼いでいません

1. 公開後の47分でやったこと

作業所要
一般設定(サイト説明・時刻形式)約4分
パーマリンク設定+robots.txt の切り分け約6分
固定ページ3点の起草約12分
固定ページ3点の公開+フッターメニュー約8分
テーマのタイトル・メタディスクリプション設定約3分
表示速度の再計測・検証約4分
サンプル記事の削除・表示名の変更・各種更新約12分
合計約47分

1本目のサーバー構築(2時間10分)と合わせると、契約から「サイトとして体裁が整う」までが約2時間57分でした。

この47分のうち、順番が効くのは最後の計測です。詳しくは後述しますが、先に結論だけ書くと、アクセス解析は1本目の記事を公開する前に入れないと、その記事の初動データが永久に取れません。

2. robots.txt が404だった。答えはパーマリンクだった

症状

サイトが表示されるようになった直後、https://(自分のドメイン)/robots.txt を開いたら404でした。

WordPressは、サーバー上に物理ファイルがなくても仮想の robots.txt を返します。だから404になるのはおかしい。入れたばかりのサイトで、プラグインもテーマもほぼ素の状態。心当たりがありませんでした。

原因

パーマリンク構造が「カスタム構造」の空欄のままでした。

WordPressの仮想 robots.txt は、リライトルール(URLの書き換え規則)を経由して返されます。 パーマリンク構造が空だとリライトルールが生成されないので、/robots.txt へのリクエストがWordPressに渡らず、そのまま404になります。

解決

設定 → パーマリンク →「投稿名」を選んで保存するだけです。

WordPressのパーマリンク設定画面。パーマリンク構造で「投稿名」が選択されている
設定→パーマリンク。「投稿名」を選んで保存すると、リライトルールが再生成されます。

保存ボタンを押すこと自体がリライトルールの再生成なので、構造を変えなくても「保存」を押すだけで直る場合もあります。

確認はコマンド1行です。

curl -I https://(自分のドメイン)/robots.txt
→ HTTP/2 200

404 から 200 になりました。中身も正常です。

ブラウザで開いたrobots.txt。User-agent、Disallow、Sitemapの各行が表示されている
パーマリンク保存後のrobots.txt。Sitemapの行も自動で入ります。
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://(自分のドメイン)/wp-sitemap.xml

なぜここに時間を使う価値があるか

Search Consoleに登録する前にここを踏むと、原因の切り分けで時間を失います。 「robots.txt 404」で検索して出てくるのは、たいていサーバー設定やプラグインを疑う話で、答えが「パーマリンクを保存する」だと書いてある記事に、私は行き当たりませんでした。

ついでに、パーマリンクで「投稿名」を選ぶ理由も書いておきます。日付入りの構造にすると、記事を書き直したときもURLの日付は古いままです。数字ベースはURLから内容が分かりません。投稿名なら、記事タイトルを変えてもスラッグ(URL)は据え置けるので、あとから効きます。実際、1本目は公開前にタイトルを一度変えましたが、スラッグは変えていません。

なお、パーマリンクは記事を書く前に決めてください。 記事が増えてから変えると、既存の記事のURLがすべて変わります。

3. タイトルが80字を超え、メタディスクリプションが出ていなかった

症状

「設定 → 一般 → キャッチフレーズ」に、サイトの説明文(70字ほど)を入れました。すると <title> がこうなりました。

ゼロイチ日誌  |  会社員が副業の仕組みをゼロから立ち上げる実録。サーバー契約からツール選定まで、支払った実額・所要時間・つまずいた箇所をそのまま公開します。

80字超です。検索結果に表示されるのは先頭の30字前後なので、サイト名以外はほぼ表示されません。

さらに、<meta name="description">出力されていませんでしたog:description(SNSでシェアされたときの説明文)と twitter:description には入っているので、余計に気づきにくい状態でした。

原因は2つある

  1. テーマのフロントページタイトルの既定が「サイト名 | キャッチフレーズ」。一般設定のキャッチフレーズが、そのままタイトルに連結される
  2. メタディスクリプションは、一般設定のキャッチフレーズからは出力されない。Cocoon設定 → タイトル →「サイトの説明」欄に入れないと出ない

同じ文章でも、キャッチフレーズに入れるとタイトルが伸び、「サイトの説明」に入れるとメタディスクリプションになります。 入れる場所で結果がまったく違う、というのがここの引っかかりどころです。

解決

Cocoon設定 → タイトル → フロントページ設定で、次のように分けました。

設定
フロントページタイトル自由形式
自由形式タイトルゼロイチ日誌|副業の立ち上げを実額で記録する22字
サイトの説明説明文(69字
Cocoon設定のタイトルタブ。検索結果プレビュー、フロントページタイトルの自由形式、サイトの説明の入力欄が並んでいる
Cocoon設定→タイトル→フロントページ設定。上部に検索結果のプレビューが付いています。

この画面には検索結果のプレビューが付いています。タイトルと説明文がGoogleでどう並ぶかがその場で出るので、字数を数える前にここを見るのが早いです。

確認もコマンドでできます。

curl -s https://(自分のドメイン)/ | grep -o '<title>.*</title>'
curl -s https://(自分のドメイン)/ | grep -o '<meta name="description"[^>]*>'

現在は <title> が22字、description が69字で出力されています。表示されない文字を書かない、という単純な話です。

4. スコアの話:「92で確定」と書いた翌日に、100になっていた

ここは、1本目に書いた内容が1日で古くなった部分です。経緯ごと残します。

最初の計測(記事0本のとき)

表示速度はPageSpeed Insights(モバイル)で測っています。

計測パフォーマンスユーザー補助おすすめの方法SEO
公開直後9410010083
メタディスクリプション設定後9410010092

SEOが83→92に上がったのは、前章のメタディスクリプションが出力されるようになったからです。減点1件で9点という配点でした。

残った減点は「リンクはクロールできません」の1件だけ。原因を追うと、テーマの「トップへ戻る」ボタンが href を持たない <a> タグでした。Lighthouse(PageSpeedの中身)は href のない <a> を「クロールできないリンク」と判定します。

このとき私はこう判断して、記録にもそう書きました。

92で確定。 100にするにはトップへ戻るボタンを消すしかない。スマホで長い記事を読む人の利便性を落としてまで取る2点ではない。

翌日、測り直したら100だった

この記事を書くために同じURLを測り直したら、SEOが100になっていました。

PageSpeed Insightsの計測結果。パフォーマンス78、ユーザー補助100、おすすめの方法100、SEO100
2026年7月27日、記事1本を公開した後のトップページ(モバイル)。SEOが100になり、パフォーマンスは78に下がりました。

実際のHTMLを確認すると、同じクラス名のまま、要素が <a> から <button> に変わっていました。

<button class="go-to-top-button go-to-top-common …" aria-label="トップへ戻る">

<button> はリンクではないので、そもそもこの監査の対象外です。テーマの更新はあの計測の後に実行しているので、更新でこの減点が消えたと考えるのが自然です。 私が「取らない」と判断した2点は、判断する必要すらありませんでした。

同時に、パフォーマンスは94から78に落ちた

同じ計測で、パフォーマンスは 94 → 78 です。

計測(すべてモバイル)パフォーマンスユーザー補助おすすめの方法SEO
2026-07-26/トップ・記事0本9410010092
2026-07-27/トップ・記事1本78100100100
2026-07-27/記事ページ7497100100

指標を見ると理由ははっきりしています。

指標トップ(記事1本)記事ページ
First Contentful Paint3.1秒3.0秒
Largest Contentful Paint4.4秒4.6秒
Total Blocking Time70ミリ秒120ミリ秒
Cumulative Layout Shift00
Speed Index3.6秒5.2秒

記事1本とアイキャッチ画像が入っただけで、最大コンテンツの描画(LCP)が4秒台に乗りました。 記事0本のときの94は、表示するものがほとんど無かったから出た数字です。

PageSpeed Insightsの計測結果。記事ページはパフォーマンス74、ユーザー補助97、おすすめの方法100、SEO100
同日に測った記事ページ。画像7点を含むため、トップページよりさらに下がります。

記事ページのユーザー補助97も、減点は「背景色と前景色のコントラスト比」の1件です。これは自作したアイキャッチや装飾が原因である可能性があるので、特定してから直します。分からないうちに「直しました」とは書きません。

ここから持ち帰るもの

  • スコアは「サイトの実力」ではなく、「そのページの、その時点の測定値」です。 記事0本のときの94を持ち出して「速いサイト」と名乗るのは意味がありません
  • 意味があるのは差分だけ。 同じURL・同じ条件で測り直して並べたときに初めて、何が効いたのかが見えます。だから私は、測るたびに日時と条件をセットで残します
  • 「100にしない」という判断自体は残します。 利便性を削ってスコアを買うことはしません。ただし今回は、判断する前にテーマ側が直していました。自分の判断を並べるより、まず現状を測り直すほうが先でした

1本目に「92で確定した」と書いた以上、これは訂正です。黙って書き換えずに経緯を残すのがこのサイトの方針なので、そのまま出しています。

5. ペンネームで運営するとき、住所を書くのか

公開したその日に、固定ページを3つ作りました。

ページ役割
運営者情報誰が書いているか。連絡手段
プライバシーポリシーアクセス解析で何を取得し、どう扱うか
広告掲載方針広告の有無と、報酬が評価に与える影響について

ASPの審査でも見られる部分ですが、それ以前に、読んだ人が「この記事を信じるかどうか」を判断する材料です。フッターから全ページ辿れるようにしました。

サイトのフッター。運営者情報、プライバシーポリシー、広告掲載方針の3ページへのリンクが並んでいる
フッターメニュー。3ページはどこからでも1クリックで開けます。

詰まるのはここ

ペンネームで運営したい人が最初に止まるのが、「プライバシーポリシーに本名と住所を書かなければいけないのか」です。私も止まりました。整理するとこうなります。

特定商取引法:自分で通信販売をしない(広告を掲載するだけの)サイトには、原則として適用されません。氏名・住所・電話番号を常時掲載する義務はない、というのが一般的な整理です。自分で物やサービスを売るなら話は変わります。

個人情報保護法32条1項:保有個人データを扱う事業者は、氏名・住所などを「本人の知り得る状態」に置く必要があります。ただし、条文にはこう書かれています。

本人の求めに応じて遅滞なく回答する場合を含む

つまり、常時ウェブサイトに掲載していなくても、請求があった本人に遅滞なく回答できる状態であればよい、と読めます。当サイトはこの形を採り、プライバシーポリシーに「請求があった場合、本人に対して遅滞なく開示します」と明記しました。連絡手段も同じページに書いています。

※ここは私の解釈です。 事業の形態によって結論は変わりますし、迷うなら専門家に確認してください。断定はしません。

ドメインの登録情報も確認する

もう一つ、見落としやすいのがドメインのWhois情報です。ドメインを取得すると、登録者の氏名・住所・電話番号が原則として公開されます。ここが公開されていたら、サイト側で伏せても意味がありません。

私が使ったサービスではWhois情報公開代行が標準で適用されていて、事業者の情報が代わりに表示される形でした。契約したら必ず、自分のドメインのWhoisを引いて確認してください。

whois (自分のドメイン)

6. アクセス解析は「1本目を書く前」に入れる

ここが、47分の中で唯一やり直しの効かない部分です。

理由は単純で、アクセス解析を入れる前に公開した記事は、公開直後の数日のデータが永久に取れないからです。あとから入れても過去には遡れません。「最初の記事がどこから何人に見られたか」は、そのとき計測していた人しか知ることのできない情報です。

順番が効く:GA4 → Search Console

順番所有権の確認
GA4を先に入れる → Search ConsoleURLを入れるだけで自動確認
Search Consoleを先にやるHTMLファイルの設置やDNSレコードの編集が必要

同じGoogleアカウントでGA4を先に設置しておくと、Search Consoleが「Googleアナリティクス」経由で所有権を自動確認します。URLを入れて続行を押すだけで終わりました。

⚠️ 注意点:この確認方法はGA4のタグに依存します。テーマ設定から測定IDを消すと、Search Consoleの所有権確認も外れます。落ち着いたら「設定 → 所有権の確認」で別の方法も足しておくほうが安全です。

プラグインを増やさずに済んだ

GA4のセットアップ画面は「WordPressを使用してインストールする(おすすめ)」を初期選択で出してきます。これはプラグインの導入です。

ただ、Cocoonには「アクセス解析・認証」タブにGA4測定IDの入力欄があります。 手動を選んで測定IDを貼るだけで済むので、プラグインを1本も増やさずに終わりました。

  • Cocoon設定 → アクセス解析・認証 → Google Analytics設定 → GA4測定IDG- で始まるIDを入力して保存
  • 検証はGA4側の「インストールをテスト」。「ウェブサイトで Google タグが正しく検出されました」が出ればOK

プラグインは増えるほど、更新の手間と表示速度の負担になります。テーマに入力欄があるならテーマに入れる、が今回の判断です。

つまずき:サイトマップ送信直後の「取得できませんでした」

wp-sitemap.xml をSearch Consoleに送信した直後、ステータスが赤字で「取得できませんでした」と表示されました。

設定を疑う前に、サイト側を確認しました。

curl -I https://(自分のドメイン)/wp-sitemap.xml
→ HTTP/2 200 / application/xml

Googlebotのユーザーエージェントでも200。中身も正常なsitemapindexでした。つまりサイト側は問題なし。ページを再読み込みしたら「成功しました」に変わりました。 送信直後の一時的な表示です。

同じ種類の紛らわしい表示がもう1つあります。記事を公開してURL検査をすると「参照元サイトマップが検出されませんでした」と出ることがありますが、これはサイトマップを送信した時点でその記事がまだ存在しなかったというだけで、サイトマップ自体には載っています。

どちらも、焦って再送信したり設定をいじったりしないのが正解です。

設定はプライバシー側に倒した

GA4の設定には、判断が要る箇所が何点かありました。全部、訪問者を守る側に倒しています。

  • データ共有設定の「Googleのプロダクトとサービス」(広告用途への共有)はオフのままにした
  • 規約画面で出てくるCookieの同意は拒否した
  • 規約の国は初期値から日本に変更した
  • GDPRのデータ処理規約にも同意した(日本のサイトでは必須ではありませんが、入れておく側に倒しました)

プライバシーポリシーに「アクセス解析を使い、個人を特定する情報は取得しない」と書く以上、設定側も揃っていないと嘘になります。

アカウントを間違えない

最後に、いちばん地味で、いちばん後を引く話です。

ブラウザの既定ログインが本業のアカウントだったので、GA4を作る前にサイト運営用のアカウントへ切り替えました。ここを見落とすと、後から「アクセス解析が本業のアカウントにぶら下がっている」状態になり、移管の手間が発生します。

実際、私は同じミスをASPの登録で先にやらかしていて、後日アドレスを変更する作業が発生しました。サービスを増やすたびに「どのアカウントで作るか」を先に決めるのが、結局いちばん速いです。

7. これから始める人へ

順番どおりに並べると、こうなります。

  1. パーマリンクを「投稿名」で保存する(記事を書く前に。あとから変えると既存記事のURLが全部変わります)
  2. robots.txtwp-sitemap.xml が200で返るか、curl -I で確認する
  3. テーマ側のタイトル・メタディスクリプション設定を確認する(一般設定のキャッチフレーズとは別物です)
  4. 運営者情報・プライバシーポリシー・広告掲載方針を作り、フッターから辿れるようにする
  5. 自分のドメインのWhoisを引いて、氏名・住所が公開されていないか確認する
  6. アクセス解析(GA4)→ Search Console の順で入れる
  7. その状態で表示速度を1回測り、日時と条件ごと記録する
  8. ここまで済んでから1本目の記事を書く

再現できること:この記事の手順は、特別な知識なしで再現できます。私の場合は合計47分でした。

再現できないかもしれないことスコアの数字です。テーマもWordPress本体も更新されるので、ここに書いた減点の理由が明日には消えている可能性があります(実際、1日で消えました)。手順ではなく、確認の仕方のほうを持って帰ってください。

サーバーの契約から公開までは1本目に書いています。

次回

次は公開したあとの話です。Search Consoleへのインデックス登録リクエスト、SNSでの告知、そして同じ日にアフィリエイトの提携が成立して、公開済みの記事に広告リンクを足すまで。「提携する前に書いた記事を、提携後に一字も変えない」をどう担保したかも書きます。

数字(表示回数・クリック)が溜まってから出すので、少し先になります。

このサイトは、うまくいった手順だけを並べるつもりはありません。支払った額・かかった時間・間違えた判断を、同じ比重で残していきます。

タイトルとURLをコピーしました