2026年5月24日
2026年5月24日
ローカルhostsファイルでDNSを上書きする方法|サーバー移転前の動作確認に使う
hosts ファイルに「IPアドレス ドメイン名」の行を1行書くと、そのパソコンの中だけ、DNSの答えを無視して指定したIPアドレスに接続させられます。WordPress のサーバー移転では、DNSを切り替える前に新サーバーのサイトを本番と同じドメインで確認できるため、移転作業の定番の手順です。この記事では、Windows・Mac・Linux での編集方法、書き方の注意、確認のしかた、作業後の戻し方までを説明します。
hosts ファイルで何ができるのか
パソコンがドメイン名をIPアドレスに変換するとき、多くのOSは DNSサーバーに問い合わせる前に hosts ファイルを確認します。ここに書かれた名前は、DNSの設定にかかわらず hosts ファイルの値が使われます。
影響はそのパソコンだけに限られ、他の人やインターネット上のDNSには一切影響しません。そのため次のような用途に向いています。
- サーバー移転の前に、新サーバーで WordPress が正しく動くかを本番のドメインで確認する
- 本番サイトに触れずに、新しいサーバーでテーマやプラグインの更新を試す
- 開発用のドメイン名(例:
mysite.test)をローカルのサーバーに向ける
WordPress はデータベースに保存されたサイトのURL(siteurl と home)へリダイレクトするため、新サーバーにIPアドレスで直接アクセスすると旧サーバーへ飛ばされてしまいがちです。hosts ファイルを使えば、本番と同じURLのまま新サーバーを確認できます。
ファイルの場所
| OS | 場所 |
|---|---|
| Windows | C:\Windows\System32\drivers\etc\hosts |
| Mac | /etc/hosts(実体は /private/etc/hosts) |
| Linux | /etc/hosts |
どのOSでも、編集には管理者権限が必要です。
書き方
1行に「IPアドレス」「空白またはタブ」「ドメイン名」の順で書きます。
# 新サーバーの動作確認用(確認が終わったら削除する)
203.0.113.20 example.com www.example.com
書くときの注意点は次のとおりです。
- www の有無は別の名前:
example.comとwww.example.comは別々に扱われます。サイトで使っている名前をすべて書きます。画像を別のサブドメインから配信している場合はそれも必要です - ワイルドカードは使えない:
*.example.comのような書き方はできません - ポート番号は書けない:hosts ファイルは名前とIPアドレスの対応だけを扱います
- **行頭の
#はコメント**:一時的に無効にしたいときは、行頭に#を付けます。作業メモを残しておくと消し忘れを防げます
Windows で編集する
hosts ファイルは、普通にダブルクリックで開いて編集しても保存できません。メモ帳を管理者として起動してから開きます。
- スタートメニューで「メモ帳」を検索し、右クリックして「管理者として実行」を選ぶ
- メモ帳の「ファイル」→「開く」で
C:\Windows\System32\drivers\etcを開く - ファイルの種類を「すべてのファイル」に切り替えて hosts を開く
- 行を追加して上書き保存する
保存時に hosts.txt のように拡張子が付かないように注意します。また、セキュリティソフトが hosts ファイルの変更を不審な操作として警告・ブロックすることがあります。その場合は、自分で行った変更であることを確認したうえでソフトの指示に従ってください。
保存したら、古い名前解決の結果が残らないように DNSキャッシュを消しておきます。
ipconfig /flushdns
Mac・Linux で編集する
ターミナルで、管理者権限でエディタを起動します。
sudo nano /etc/hosts
行を追加したら、nano では Ctrl+O で保存、Ctrl+X で終了します。編集前にコピーを取っておくと、書き間違えても戻せます。
sudo cp /etc/hosts /etc/hosts.bak
Mac では、編集後に DNSキャッシュも消しておきます。
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
新サーバーに接続できているかを確認する
ここでよくある勘違いが、nslookup や dig で確認しようとすることです。これらのコマンドは hosts ファイルを参照せずDNSサーバーに直接問い合わせるため、hosts ファイルを書き換えても結果は変わりません。確認には次の方法を使います。
# OSの名前解決を使うので hosts ファイルが反映される
ping example.com
表示されたIPアドレスが hosts ファイルに書いた新サーバーのものなら、OSの設定は効いています。ブラウザでは、開発者ツールの「ネットワーク」タブでリクエストを選ぶと、接続先のIPアドレス(Remote Address)を確認できます。
見分けやすくするために、新サーバー側に一時的な目印(管理画面のサイト名を変える、確認用の固定ページを作るなど)を用意しておく方法もあります。
hosts ファイルを使わずに確かめる方法
curl の --resolve オプションを使うと、そのコマンドの間だけ名前とIPアドレスの対応を指定できます。hosts ファイルを触らずに済むので、サーバー側の応答だけを手早く確かめたいときに便利です。
curl -I --resolve example.com:443:203.0.113.20 https://example.com/
つまずきやすい点
HTTPS で証明書のエラーになる
新サーバーにまだ SSL証明書が入っていないと、ブラウザが証明書のエラーを表示します。Let's Encrypt の一般的な発行方法(HTTP-01)は、DNSが新サーバーを向いていないと証明書を発行できません。DNSを切り替える前に確認したい場合は、レンタルサーバーが用意している移転前の証明書発行の機能や、DNSのTXTレコードで認証する方法(DNS-01)を使うか、HTTPのまま表示だけを確認します。
一部の環境で旧サーバーが表示される
ドメインに IPv6 の AAAA レコードがある場合、hosts ファイルに IPv4 だけを書いていると、環境によっては IPv6 側の名前解決で旧サーバーに接続されることがあります。新サーバーの IPv6 アドレスがあれば併記し、無ければ確認中だけ注意しておきます。
ブラウザの「セキュアDNS(DNS over HTTPS)」が有効な場合も、ブラウザの実装や設定によっては hosts ファイルの扱いが異なります。うまく反映されないときは、一時的にセキュアDNSをオフにして試します。この挙動はブラウザの更新で変わる可能性があります(2026年10月現在)。
ブラウザのキャッシュが残っている
OSのキャッシュを消しても、ブラウザが古い接続を使い続けることがあります。ブラウザを再起動するか、シークレットウィンドウで開き直すと切り分けやすくなります。
作業が終わったら元に戻す
DNSを新サーバーに切り替えたら、hosts ファイルに追加した行は削除するか、行頭に # を付けて無効にします。残したままにすると、将来もう一度サーバーを移転したときやIPアドレスが変わったときに、自分のパソコンだけ古いサーバーに接続し続け、原因に気付きにくいトラブルになります。削除したあとは、もう一度DNSキャッシュを消しておきます。
まとめ
- hosts ファイルに「IPアドレス ドメイン名」を書くと、そのパソコンだけDNSの答えを上書きできる
- WordPress のサーバー移転前に、本番と同じURLで新サーバーを確認する用途に向いている
- www の有無やサブドメインは別々に書く。ワイルドカードやポート番号は使えない
- 確認は ping やブラウザの開発者ツールで行う。nslookup や dig は hosts ファイルを見ない
- 作業後は追加した行を削除し、DNSキャッシュを消しておく