FTPで更新しているサイトをNetlifyに移行する手順|移行前に消すべきファイルがある
FTPで長く運用してきたフォルダには、たいてい古いバックアップが溜まっています。そのまま移行すると、全部が公開されます。実際にやってしまった失敗を含めて手順を書きます。
結論:移行そのものより、移行前の掃除が重要
FTPからNetlifyへの移行は、ファイルを置き換える作業としては簡単です。フォルダを指定してコマンドを1つ打てば終わります。
危険なのは、そのフォルダの中身です。
FTPで何年か運用したフォルダには、まず間違いなくこういうファイルが残っています。
index_old.html
index.html.bak-20240312
test.html
新しいフォルダ/
料金表_旧.pdf
FTPソフトで見ているときは気になりません。必要なファイルだけをブラウザで開いているからです。
Netlifyは違います。指定したフォルダの中身を、全部そのまま公開します。
index_old.html も 料金表_旧.pdf も、URLを直接叩けば誰でも見られる状態になります。旧料金や取引先名が入っていれば、そのまま外に出ます。
移行の最初の作業は、アップロードではなく掃除です。
手順1:公開フォルダを別の場所に複製する
FTPで落としてきたフォルダを、そのまま作業対象にしないでください。
cp -R ~/Downloads/site_ftp ~/work/site_public
元のフォルダは触らずに残します。 掃除の途中で必要なファイルを消してしまったとき、戻す先が必要になります。
FTPサーバー側のファイルも、移行が完全に終わるまで消さないでください。
手順2:公開してはいけないファイルを洗い出す
複製したフォルダで、次を確認します。
cd ~/work/site_public
# バックアップ・旧版のたぐい
find . -iname "*.bak*" -o -iname "*_old*" -o -iname "*旧*" -o -iname "*.orig"
# 作業用ファイル
find . -iname "test*" -o -iname "temp*" -o -iname "*コピー*"
# 想定外の拡張子(静的サイトに .php や .sql は不要)
find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
3つ目が特に効きます。 拡張子を数えると、あるはずのないものが浮かびます。.sql や .zip が出てきたら、データベースのバックアップや配布用のアーカイブが置きっぱなしになっている可能性があります。
私は別サイトの移行で、.bak-20260825 という名前のファイルが公開対象に混ざっているのを直前で見つけました。見つけられたのは、次の手順を踏んでいたからです。
手順3:本番の前に、必ず一度「何が公開されるか」を見る
これを飛ばさないでください。
Netlifyには、実際には公開せずに対象ファイルの一覧だけを出す方法があります。
netlify deploy --dir . --dry-run
出てきた一覧を、上から下まで目で読んでください。 ここに出ているものが、そのまま公開されるものです。
前述の .bak ファイルは、この一覧で見つけました。手順2の検索では拾えていませんでした。 検索は条件に合うものしか見つけられませんが、一覧はすべて出ます。
不要なものが混ざっていたら、公開フォルダの外へ移動します。消すのではなく移動です。
mkdir -p ~/work/_backups
mv index_old.html "料金表_旧.pdf" ~/work/_backups/
手順4:公開する
掃除が済んだら公開します。
netlify deploy --dir . --prod
初回はサイトを新規作成するか既存を選ぶか聞かれます。指示に従って進めれば数十秒で終わります。
この時点では ◯◯◯.netlify.app という仮のURLで見られる状態です。独自ドメインはまだ切り替えていません。 元のサイトは動いたままなので、落ち着いて確認できます。
確認すること
| 見る場所 | 確認内容 |
|---|---|
| トップページ | 画像・CSSが崩れていないか |
| 内部リンク | クリックして404にならないか |
| フォーム | 動かなくなっていないか(後述) |
| 掃除したファイル | URLを直接叩いて404になるか |
最後の項目を必ずやってください。 移動したはずのファイルのURLを直接開いて、404が返ることを確認します。
手順5:動かなくなる機能を把握する
ここが移行で一番よく詰まる点です。
Netlifyは静的ファイルを配信するサービスです。サーバー側でプログラムを動かす仕組みは、そのままでは動きません。
| FTPで動いていたもの | Netlifyでは |
|---|---|
| HTML / CSS / 画像 / PDF | そのまま動く |
| JavaScript(ブラウザ側) | そのまま動く |
| PHPのお問い合わせフォーム | 動かない |
| アクセスカウンター(CGI) | 動かない |
| WordPress | 動かない(別の移行が必要) |
お問い合わせフォームが mail.php などで動いている場合、移行するとメールが届かなくなります。
しかもエラー画面は出ません。 送信ボタンは押せて、送信されないだけです。気づかないまま問い合わせを取りこぼすのが最悪の形です。
対処は、Netlify側のフォーム機能に置き換えるか、外部のフォームサービスを使うかです。どちらにしても作業が発生するので、移行の計画に最初から入れておいてください。
手順6:独自ドメインを切り替える
サイトの中身が確認できたら、ドメインを向けます。ここが手順の中で唯一、失敗すると表に出る作業です。
大まかには次の流れです。
- Netlifyの管理画面でドメインを追加する
- 指示された内容をドメイン管理側のDNSに設定する
- SSL証明書が自動発行されるのを待つ
2の「ドメイン管理側」がどこかを、先に確定させてください。
私はここで15時間ほど無駄にしました。 原因は2つあり、どちらも自分の勘違いでした。
① ネームサーバーの系統を取り違えていた
同じ会社でも、サービスによってDNSを管理している場所が違うことがあります。片方の管理画面で設定しても、実際に参照されているのはもう片方でした。
設定する前に、そのドメインが実際にどこを見ているかを確認してください。
dig NS example.com +short
ここに出てくるサーバーを管理している画面が、設定すべき場所です。
② レンタルサーバー側にドメインを登録してしまった
「ドメインを使うのだから登録が必要だろう」と考えて、レンタルサーバーの管理画面でドメインを追加しました。
これが致命傷でした。 追加した時点でサーバー側にもDNSの設定が作られ、Netlifyの設定と競合してSSL証明書が発行できなくなりました。
公開先がNetlifyなら、レンタルサーバー側にドメインを追加してはいけません。 登録を消したら、証明書はすぐに発行されました。
この件は独自ドメインをNetlifyに向けるときの落とし穴に詳しく書いています。
手順7:切り替え後に確認する
DNSの変更は、すぐには世界中に反映されません。 数時間から、長いと1〜2日かかります。
反映を待つ間、元のFTPサーバーのファイルは消さないでください。 反映が済んでいない人には、まだ旧サーバーの内容が表示されています。
切り替わったかどうかは、こう確認します。
# どこを向いているか
dig example.com +short
# 証明書が出ているか(200が返れば発行済み)
curl -s -o /dev/null -w "%{http_code}\n" https://example.com
https:// で200が返るようになったら完了です。 ここまで確認できてから、旧サーバーのファイルを消してください。
つまずきやすい点
「公開フォルダ」の指定を間違えると1階層ずれる
netlify deploy --dir . の . はいま居るフォルダという意味です。1つ上で実行すると、フォルダごと公開されてサイトが /site_public/ の下に入ります。
トップページが404になったら、まずこれを疑ってください。
隠しファイルも公開される
.git や .env のようにドットで始まるファイルも対象です。.env に認証情報が入っていれば、それも公開されます。
--dry-run の一覧は隠しファイルも出るので、そこで見つけてください。
更新のやり方が根本的に変わる
FTPは1ファイルずつ上書きする仕組みですが、Netlifyはフォルダ全体を送り直す仕組みです。
「1文字だけ直したい」ときも、手元のファイルを直してもう一度送ることになります。慣れると速いのですが、FTPソフトでサーバー上のファイルを直接編集していた人には、最初は面倒に感じます。
代わりに、過去の状態にいつでも戻せます。 送った履歴が残っているので、壊したときは1クリックで前の状態に復帰できます。 FTPにはこれがありません。
よくある質問
FTPで運用しているサイトはそのままNetlifyに移せますか?
移行前に必ずやるべきことは何ですか?
お問い合わせフォームはどうなりますか?
旧サーバーはいつ解約していいですか?
レンタルサーバー側でドメインの設定は必要ですか?
まとめ
- 移行作業そのものより、公開フォルダの掃除が重要
--dry-runで公開対象の一覧を必ず目視する。 検索では拾えないものが出る- PHPのフォームは動かなくなる。 しかもエラーが出ないので気づきにくい
- レンタルサーバー側にドメインを追加しない。 SSLが発行できなくなる
- 旧サーバーは、httpsで200を確認するまで残す
移行後の運用がFTPとどう変わるかは、Netlifyとレンタルサーバーの使い分けにまとめました。公開手順そのものはNetlifyで静的サイトを公開する手順が詳しいです。