本番と同じサーバーで、誰にも見せずに新しいサイトを試す:確認用のサブドメインの作り方

Xserver に、本番と同じサーバーで試せる確認用のサブドメイン(ステージング環境)を作りました。ベーシック認証のアクセス制限、検索除けの X-Robots-Tag: noindex、親フォルダの WordPress の書き換えを効かせない RewriteEngine On、本番でしか確かめられないことの確かめ方までの手順です。

「誰にも見せずに試す」の文字と、アクセス制限・noindex・RewriteEngine On の札

Xserver でステージング環境(本番に出す前に試す場所)を作るなら、本番と同じサーバーに確認用のサブドメインを作り、ベーシック認証でアクセスを制限し、X-Robots-Tag で検索エンジンに載せないようにするのが手堅い方法でした。親フォルダに WordPress がある時は、サブドメインの .htaccess に RewriteEngine On を書くと、親の書き換えが効かなくなります。

会社のサイトを WordPress から静的なサイトへ移す時、新しいサイトを、本番と同じレンタルサーバー(Xserver)の中に作った確認用のサブドメインに置いて試しました。この「リハーサル」で、本番に出す前に、サーバーの上でしか分からないことを確かめています。

移行の全体の流れは、別の記事に書きました。この記事では、確認用のサブドメインの作り方に絞って、手順と、気をつけたところを書きます。

新しいトップページの画面と「WordPress → 静的サイト」の文字ホームページ制作WordPress から静的サイトへ、社名で検索1位を守ったまま移行した全手順会社のサイトを WordPress から静的サイト(HTML のファイルを置くだけのサイト)へ移した全手順です。社名で検索1位を守るための 301 リダイレクトの洗い出し、バックアップ、誰にも見せないリハーサル、表示を止めない切り替えの順番、すぐ戻せる作りまでを、実際の手順書から書きます。

ステージング環境が要った理由:Mac で試すだけでは足りなかった

新しいサイトは、Mac の上でも動かして確かめていました。けれども、Mac で動いても、レンタルサーバーの上で同じように動くとは限りません。

窓辺に電子ピアノが置かれた、日の入る部屋の写真
本番の前に、同じ環境で練習できる場所をつくった(イメージ写真)
Mac で動いてもレンタルサーバーで同じように動くとは限らない。本番のサーバーでしか確かめられないこと。メールが届くか、キャッシュにお問い合わせのページが載らないか、画像が正しい種類で返るか
同じサーバーなので、PHP もメールもキャッシュも本番と同じ

そこで、本番と同じサーバーの中に、確認用のサブドメインを作りました。同じサーバーなので、PHP の設定も、メールの送り方も、キャッシュの仕組みも、本番と同じです。

確認用のサブドメインの作り方

建物の断面を描いた、青い設計図の写真
確認用のサブドメインは、本番と同じ作りにする(イメージ写真)
  1. サーバーパネルでサブドメインを作り、SSL を有効にする

    サーバーパネルでサブドメインを作り、無料の SSL(https)を有効にします。

  2. 作ったフォルダの、実際の場所を確かめる

    私たちは、フォルダは短い名前で作られると思い込んでいましたが、実際にはサブドメインの名前そのままのフォルダでした。ファイルを送る前に、実際の場所を必ず確かめます。

  3. アクセス制限をかける

    サーバーパネルの「アクセス制限」で、ID とパスワードを入れないと開けないようにします。パネルは、そのフォルダの .htaccess に、認証の行を書き足します。

  4. 確認用の .htaccess を置く

    検索除け、親フォルダの書き換えの止め方、404 のページの設定を書きます(次の節)。

  5. ファイルを送り、確かめる

    新しいサイトのファイルを送り、curl とブラウザで確かめます(あとの節)。

ブラウザのログインの画面の再現。確認用のサブドメインは、ユーザー名とパスワードを入れないと開けない
アクセス制限をかけた確認用のサブドメイン(画面は見本)

確認用のフォルダの .htaccess

.htaccess確認用のフォルダの .htaccess(仕組みが分かる短い見本)
# アクセス制限の行は、サーバーパネルが書き足す。手では書かない

DirectoryIndex index.html index.php
Options -Indexes
ErrorDocument 404 /404.html

<IfModule mod_headers.c>
    # 検索エンジンに載せない。エラーやパスワードの画面にも付けるため always
    Header always set X-Robots-Tag "noindex, nofollow"
</IfModule>

<IfModule mod_rewrite.c>
    # 親フォルダ(本番の public_html)の WordPress の書き換えを、このフォルダに効かせない
    RewriteEngine On
</IfModule>
Mac で書き出したサイトを、アクセス制限と検索除けを付けた確認用のサブドメインで試し、確かめてから本番に送る流れ
本番と同じサーバーで、誰にも見せずに試す

確かめ方

確かめるのは、Mac のターミナルからの curl です。サーバーに入る必要はありません。ID とパスワードは、変数に入れて使います。

Macで実行
curl -s -o /dev/null -w '%{http_code}\n' https://staging.example.com/
401
curl -s -o /dev/null -w '%{http_code}\n' -u "${ID}:${PW}" https://staging.example.com/
200
curl -sI -u "${ID}:${PW}" https://staging.example.com/no-such-page/ | grep -iE '^(HTTP|x-robots-tag)'
HTTP/2 404
x-robots-tag: noindex, nofollow
curl -s -o /dev/null -w '%{content_type}\n' -u "${ID}:${PW}" https://staging.example.com/img/sample.webp
image/webp

このほかに、お問い合わせのページにキャッシュを止める見出しが付いていること、お問い合わせから実際に1通送って届くことも、確認用のサイトで確かめました。それぞれの話は、別の記事に書いています。

お問い合わせのページの画面と「Cache-Control: no-store, private」の文字ホームページ制作Xserver のサーバーキャッシュで、お問い合わせフォームが送れなくなる理由と対処Xserver のサーバーキャッシュに PHP のお問い合わせフォームが載ると、全員に同じ CSRF トークン(送信を確かめる「券」)が配られて送れなくなります。対処は Cache-Control: no-store, private を毎回返すこと。session_start の落とし穴と、本番で curl で確かめる方法まで。
ターミナルの再現。curl で、鍵なしは401、鍵ありは200、無いページは404と検索除けの印、WebP の画像は image/webp と返ることを確かめている
curl で確かめた結果

本番に送る時に、確認用のフォルダを消さない

確認用のフォルダは、本番の公開フォルダの中にあります。本番にファイルを送る時、サーバーにだけあるファイルを消す送り方(rsync の --delete など)をすると、確認用のフォルダまで消えてしまいます。私たちは、--delete を使わない送り方にしています。

確認用のフォルダは本番の公開フォルダの中にあるため、本番にファイルを送る時にサーバーにだけあるファイルを消す送り方(rsync の --delete)をすると確認用のフォルダまで消えてしまう。--delete を使わない送り方にしている
--delete は使わない

まとめ

本番と同じサーバーで、誰にも見せずに新しいサイトを試す:確認用のサブドメインの作り方:要点のまとめ。本番と同じサーバーの中に、確認用のサブドメインを作って試す
この記事の要点
  • 本番と同じサーバーの中に、確認用のサブドメインを作って試す
  • 作ったフォルダの実際の場所を、送る前に確かめる
  • アクセス制限、検索除けの X-Robots-Tag、親の書き換えを止める RewriteEngine On を入れる
  • メール、キャッシュ、ファイルの種類は、本番のサーバーで確かめる

この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。

  • Xserver
  • サブドメイン
  • .htaccess
  • ベーシック認証
  • noindex
  • リハーサル

関連する記事

この記事に関連するサービス・アプリ

ブログの一覧へ