事象
開発環境と本番環境を区別して構築しているにもかかわらず、Google
などの検索エンジンに開発環境のURLが意図せず表示されてしまう問題が発生しました。この状況は、開発中の機能が外部に不用意に公開されることやセキュリティ上の問題を引き起こすリスクを持ちます。原因としては、Webクローラー
が開発環境のURLを誤ってインデックス
してしまっていることが挙げられます。ここでは、Next.js(Pages Router)
を使用したプロジェクトでこの問題に対処する方法をご紹介します。
対処法(実装)
サイトページのhead
タグ内にnoindex
メタタグを設定することで、ウェブクローラにインデックス登録されないよう指示することができます。以下は、Next.js
の_app.tsx
ファイルでの実装例です。ここでは、環境変数FRONTEND_ENDPOINT
を用いて開発環境かどうかを判断し、開発環境の場合にのみnoindex
を追加します。環境変数FRONTEND_ENDPOINT
は、開発環境では開発用のドメインを、本番環境では本番用のドメインを含むように設定しております。
import type { AppProps } from 'next/app';
import Head from 'next/head';
const basePath = process.env.FRONTEND_ENDPOINT;
export default function MyApp({ Component, pageProps }: AppProps) {
const isDevEnvironment = basePath?.includes("dev");
return (
<>
<Head>
{isDevEnvironment && <meta name="robots" content="noindex" />}
</Head>
<Component {...pageProps} />
</>
);
}
対処法(Google Search Consoleの使用)
実装をデプロイした後、Google
によるドメインのクロールをリクエストするためにGoogle Search Console
を開いてドメインを入力します。そのあとご利用のドメイン名プロバイダにログインし、発行されるTXTレコード
をDNS設定に追加します。
Google Search Console
にログインし、検査結果ページでデータが反映されたら[インデックス登録をリクエスト]
をクリックします。そのあとGoogle
の検索窓にsite:https://あなたのドメイン名
と入力して検索し、開発環境のURLが検索結果に表示されなければOKです。私の場合、変更がクローリングされて反映されるまで3~4週間はかかりました。
参照
自らの備忘録のために投稿してますが、なにかお役に立てましたら幸いです!
また、なにか間違ってましたらご指摘いただけますと幸いです!