よくある原因
404エラーの最多原因はURL自体の間違いです。QRコードを生成するとき、最後のスラッシュの有無や大文字小文字の違いだけで別のURLとして扱われ、存在しないパスにアクセスされます。例えば `https://example.com/preview` と `https://example.com/Preview` は別ページとして認識されるサーバーが多く、一方が404を返す可能性があります。QRコードの元データをデコードして正確なURLを確認するのが最初の手順です。
次に多い原因は、公開URLが変わってしまったケースです。ギガサイト便などの共有サービスでファイルを再アップロードしたとき、URLが新しく発行されてしまい、古いQRコードが古いURLを指したままになることがあります。また、Cloudflare Pagesなどを使っている場合はデプロイのたびにプレビューURLが変わる設定になっていることがあり、QRコードが古いプレビューURLを指してしまうケースがあります。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
自分側で確認すること
まずQRコードを別のQRコードリーダーアプリ(ZXing、QR & Barcode Scannerなど)でデコードし、埋め込まれているURLを文字列として確認します。確認したURLをPCのブラウザに貼り付けてアクセスし、正しく表示されるか確認してください。この手順でPCでは開けるのにQRコードだと404になる場合は、モバイル向けの別設定(`.htaccess`でのユーザーエージェント振り分けなど)が原因の可能性があります。
ギガサイト便でHTMLを公開している場合、ファイルを差し替えてもURLが変わっているかダッシュボードで確認してください。URLが変わっていた場合はQRコードの再生成が必要です。次回から同じ問題を防ぐには、QRコードにはカスタムドメインや固定の短縮URLを設定し、その短縮URLが指す先(転送先)だけを変更できる構成にすると、QRコード自体を刷り直さずに済みます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
相手側で確認すること
相手から「QRを読んだら404になった」と報告を受けたときは、まずスクリーンショットを送ってもらいます。404ページの内容(サーバーが返す404かCloudflareの404か)で原因の方向が変わります。Cloudflareの404は「1001 DNS resolution error」などのメッセージを含むため、ドメイン設定の問題と判断できます。
相手のスマホのQRコードリーダーアプリが古い場合、長いURLや特殊文字を含むURLを正しく解析できないことがあります。標準カメラアプリのQRコード読み取り機能を使うよう依頼し、それで解決すれば「リーダーの互換性問題」と確定します。また、URLに日本語やスペースが含まれていると、エンコードが不完全なQRコードを読み取ったときに404になるため、URLはASCII文字のみで構成することを推奨します。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
再発防止の運用
QRコードを印刷物や配布物に使う場合は、短縮URLサービス(Bitlyなど)や自前のリダイレクト設定を経由させる構成を取ります。こうすることでコンテンツのURLが変わってもQRコード自体を刷り直す必要がなく、転送先URLだけを更新すれば済みます。
QRコードを配布する前に必ず複数台のスマホ(iOS/Android両方)で読み取り確認をします。異なるQRコードリーダーでも試して、すべてのパターンで正しいページが開くことを確認してから印刷・配布してください。特にイベント当日に差し替えが発生した場合のリカバリ手順(短縮URLの転送先変更手順書)を事前に用意しておくと慌てずに対応できます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
QRコードのURLは合っているのに404になります。何が考えられますか?
サーバー側でそのパスのルーティングが設定されていない可能性があります。SPAのようなJavaScriptアプリの場合、サーバーが `/preview` を直接要求されても対応するファイルがなく404を返します。サーバー設定でフォールバックを `index.html` にするか、静的HTMLとして公開してください。
QRコードを再生成せずにURLを変更する方法はありますか?
短縮URLサービスを経由させるのが最も簡単です。QRコードにはBitlyやご自身のドメインのリダイレクトURLを埋め込み、転送先だけを管理画面から変更します。QRコード自体は固定のままで、指す先だけを差し替えられます。
イベント会場でQRコードが404になっていることに気づきました。すぐできる対応は何ですか?
短縮URLを使っている場合は管理画面から転送先を即変更します。そうでない場合は、正しいURLをその場でテキスト共有(LINEやチャット)で参加者に送り、QRコードの案内を一時停止するのが現実的です。再発防止のために次回から短縮URL経由にしてください。