App engineというテキストとRyuvalue funのオリジナルキャラクターであるクラコが新しいドメインをボールに見立てて、筋肉質な体で擬人化されたold domainに向かって投げたシーンである。ボールに見立てたnew domainをテキストでも表現している。

App Engineで301リダイレクトしてドメイン変更する

編集者:リュウホウ!

最終更新日:2025年2月19日

ドメインを変更した後、変更前のドメインに対して301 redirectが引継ぎの要件としてGoogle search consoleから提示されます。 本webサイトを使って以前のドメインから新しいドメインに引き継ぐ際の実際の実装方法について紹介します。 使用環境はGoogle Cloud PlatformのApp Engineになります。

この画像はGoogle Search Consoleのドメイン変更画面のスクリーンショットです。sonyericsson.jpからryuvaluefun.jpへのドメ�イン変更が表示されています。変更は2025年1月27日に開始されました。

概要

説明にあたって必要なものを確認します。

  • 変更したいドメインを予め用意する。
  • App Engineで新規サービスを作成する権限を有している。 次に手順を簡単に見てみましょう。
  1. app.yamlファイルを作成する。
  2. 必要な要件をapp.yamlに記述して保存する。
  3. nginx-app.confファイルを作成する。
  4. リダイレクト処理をnginx-app.confに記述して保存する。
  5. app.yamlをdeployする。
  6. dispatch.yamlを作成する。
  7. サービスアカウントとサービス名を紐づけるための記述を行い、保存する。
  8. dispatch.yamlをdeployする。 以上になります。詳しく見てみましょう。

ドメイン変更に必要なサービスを作成する

Google Cloud Platform (GCP) のApp Engineダッシュボードの画面です。サービス名「sonyericsson」が表示されており、サービスのリクエスト数やインスタンスの概要が確認できます。

App Engineでリダイレクトのためのインスタンスを起動及び動作させるために専用のサービスを作成する必要があります。

まず、任意の環境でディレクトリを作成し、直下にapp.yamlとnginx-app.confファイルをそれぞれ作成しましょう。

pwdコマンド:現在の作業ディレクトリを表示し、/root/projects/ryuvaluefun/app-engine/sonyericsoonが出力されています。  lsコマンド:現在のディレクトリの内容を表示し、app.yamlとnginx-app.confの2つのファイルがリストされています。

app.yamlファイルの内容

runtime: php
service: サービス名
#ex sonyericsson
instance_class: F2
env: flex

runtime_config:
  operating_system: "ubuntu22"
  document_root: .

automatic_scaling:
  min_num_instances: 3
  max_num_instances: 15
  cpu_utilization:
    target_utilization: 0.5

この段階にでコストを可能な限り発生させたくない場合は

instance_class: F1

min_num_instances: 1
max_num_instances: 1

にそれぞれ書き換えます。

nginx-app.confファイルの内容

 return 301 https://新ドメイン.jp$request_uri;
 #ex return 301 https://ryuvaluefun.jp$request_uri;

ドキュメント及びデプロイ

これらに関する公式ドキュメントはこちらのリンクになります。

以下のコマンドでデプロイしましょう。

gcloud app deploy

nginx-app.confの内容が反映されたサービスがGoogle Cloud PlatformのApp Engineに作成されます。 この時権限がないとデプロイされません。

サービス名とurlを紐づける

dispatch.yamlを作成しましょう。先ほどのファイルとは別のディレクトリ直下に作成します。 これがなければ旧URLにアクセスしてもDNSの参照先が先ほど作成したサービスに処理が引き渡されません。そのためリダイレクトもしません。

pwd: /root/projects/ryuvaluefun/app-engine  ls: dispatch.yamlとsonyericsoon  ls sonyericsoon: app.yamlとnginx-app.conf

dispatch.yamlファイルの内容

dispatch:
  - url: "旧ドメイン"
   #ex sonyericsson.jp/*
    service: サービス名
    #ex sonyericsson
    
  - url: "新ドメイン"
    #ex ryuvaluefun.jp/*
    service: サービス名
    #ex ryuvaluefun

ドキュメント及びデプロイ

dispatch.yamlでサービス名とurlを紐づける記述に関する公式ドキュメントはこちらのリンクから確認できます。

デプロイしましょう。

gcloud app deploy dispatch.yaml

dispatch.yamlを直接指定することを忘れないでください。 こちらも権限がないとエラーが発生します。

最後に

作業は以上になります。 動作しているか確認しましょう。

ドメインの移行期間は一般的に1年以上かける必要あります。 これに関しては公式ドキュメントで確認できます。 当然サイトの規模にもよりますので、実際は180日間で十分なケースもあります。参考程度に。