サイトのリニューアルやサーバー移行で、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.com5. 反映を確認する
コマンドプロンプトか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.phpのWP_HOME/WP_SITEURL.htaccessのRewriteRule- 管理画面 → 一般設定の「サイトアドレス」「WordPressアドレス」
まとめ
- 新サーバー側でドメインを受け入れる設定を最初にやる(共用なら「ドメイン設定追加」)
- サーバーのIPはサーバーパネル(XServerなら「サーバー情報」→「ホスト情報」)で確認
- PowerShellから
Start-Process notepad ... -Verb RunAsで管理者メモ帳が開ける - HTTPSに飛ばされる時はまずHSTSキャッシュを疑う(
chrome://net-internals/#hsts)
参考
- サーバー情報 | レンタルサーバーならエックスサーバー
- Start-Process (Microsoft.PowerShell.Management) – PowerShell | Microsoft Learn
- Strict-Transport-Security – HTTP | MDN
以上!!
誰かのお役に立てれば嬉しいです🐧
