MENU

DNS切り替え前のサイトをhostsで確認する方法【HSTS対策込み】

サイトのリニューアルやサーバー移行で、DNSを切り替える前に新サーバー上のサイトを確認したい場面ってありますよね。
ぼくはWordPressサイトのリニューアル案件をよくやるので、これは毎回必ず通る作業です🐧

毎度同じことやってるのに毎度ちょっと迷うので(特にHTTPSに勝手にリダイレクトされる件)、
自分用にも手順をまとめておきます!

目次

まず結論

  • 新サーバーの管理画面で対象ドメインを追加(受け入れ設定)
  • サーバーパネル(XServer等)で新サーバーのIPアドレスを確認
  • 自分のPCのhostsファイルに IP ドメイン名 を追加
  • HTTPSにリダイレクトされる時は chrome://net-internals/#hsts でHSTSキャッシュをクリア

hostsファイルの仕組み

hostsファイルは、DNSより先に参照される名前解決のローカル設定です。
ここに IP ドメイン名 を書いておくと、
そのPCではDNSを無視してそのIPにアクセスする仕組みです。

なので、DNSがまだ旧サーバーを向いていても、
自分のPCだけ新サーバーの中身を確認できます!

リニューアルやサーバー移管前の動作確認では定番の手法ですね。

実装手順

1. 新サーバーにドメインを追加する

そもそも新サーバー側でそのドメインを受け付ける設定がされていないと、
hostsで向けてもサーバーは「うちにそんなドメインないですけど?」と返してきます。
なので最初に新サーバーにドメインを追加します!

たとえばXServerの共用サーバーなら、
サーバーパネルの「ドメイン設定」 → 「ドメイン設定追加」からドメインを入力するだけでOK。
他のサーバーでも「ドメイン追加」「ドメイン設定」みたいな項目があるはずなので、各サーバーの管理画面で探してみてください!

このタイミングで「ネームサーバーが向いていない」と警告が出ても無視して追加してOKです。
追加だけしておけばhosts経由でちゃんと表示できます!

SSL証明書も発行したい場合、Let’s Encryptは外部からHTTPで疎通確認できないと発行できないので、
DNS切り替え後にやるのが基本です。
動作確認の段階ではSSL警告を無視して進めればOK!

2. サーバーのIPアドレスを確認する

たとえばXServerの共用サーバーなら、
サーバーパネル → 「サーバー情報」 → 「ホスト情報」からIPアドレスを確認できます。
他のサーバーでも管理画面のサーバー情報やインスタンス情報のページに必ずあるので、そちらで調べてみてください!

3. hostsファイルを管理者権限で開く(Windowsの例)

ここからはWindowsを例に進めます。
Mac / Linuxの人は sudo vim /etc/hosts など使い慣れた方法で編集してください!

Windowsの場合、PowerShellから管理者権限のメモ帳でhostsを開くワンライナーがこちら。

Start-Process notepad -ArgumentList "C:\Windows\System32\drivers\etc\hosts" -Verb RunAs

実行するとUACプロンプトが出るので「はい」をクリック。
メモ帳が管理者権限で起動して、編集・保存できます。

4. hostsに新サーバーのIPを追記する

メモ帳でhostsファイルが開いたら、末尾に以下を追記して保存。

192.0.2.1  example.com
192.0.2.1  www.example.com

5. 反映を確認する

コマンドプロンプトかPowerShellで ping を打ってみて、追記したIPが返ればOK。

ping example.com
# → 192.0.2.1 が返ればOK

ハマりポイント

① ブラウザが勝手にHTTPSにリダイレクトする

「hostsを設定してアクセスしたらhttps://に飛ばされて、SSL証明書エラーで開けない」
これ、たぶん原因はHSTS(HTTP Strict Transport Security)です。

HSTSは「このドメインは今後HTTPSでのみアクセスする」というポリシーをブラウザがキャッシュする仕組み。
一度でも本番でHTTPSアクセスしたことがあると、
ブラウザ側でHTTPアクセスを勝手にHTTPSに書き換えるようになります。

サーバー側のリダイレクトじゃなくて、ブラウザがリクエストを送る前に書き換えてるので、
いくらサーバーで対策してもダメ。
ブラウザのHSTSキャッシュを削除する必要があります。

Chrome / Edgeの場合、アドレスバーに以下を入力。

chrome://net-internals/#hsts

「Delete domain security policies」欄に対象のドメイン(例:example.com)を入力 → Delete。
その後ブラウザを再起動すれば、HTTPでアクセスできるようになります!

② サーバー側のリダイレクトの場合もある

HSTSをクリアしてもまだHTTPSに飛ぶ場合は、サーバー側でリダイレクト設定されている可能性があります。
curlで確認してみましょう。

curl -I http://example.com/ --resolve example.com:80:192.0.2.1

レスポンスに Location: https://... が返ってくるなら、
WordPressや.htaccess側で強制HTTPSリダイレクトが設定されています。

WordPressの場合は以下を確認。

  • wp-config.phpWP_HOME / WP_SITEURL
  • .htaccessRewriteRule
  • 管理画面 → 一般設定の「サイトアドレス」「WordPressアドレス」

まとめ

  • 新サーバー側でドメインを受け入れる設定を最初にやる(共用なら「ドメイン設定追加」)
  • サーバーのIPはサーバーパネル(XServerなら「サーバー情報」→「ホスト情報」)で確認
  • PowerShellから Start-Process notepad ... -Verb RunAs で管理者メモ帳が開ける
  • HTTPSに飛ばされる時はまずHSTSキャッシュを疑うchrome://net-internals/#hsts

参考

以上!!
誰かのお役に立てれば嬉しいです🐧

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次