このページを正しく表示するにはJavascriptを有効にしてください。
Google App Engine で xxx.appspot.com に来たら独自ドメインへリダイレクトする
pistatium.dev の独自ドメインを購入した後も、 App Engine で茂領で割り当ててくれる kimihiro-n.appspot.com のドメインでのアクセスが可能になっていたのでリダイレクトするように変更したときのメモです。
## App Engine の URL ディスパッチ機能を使う
ドメインに応じて App Engine の処理を変える方法、調べてみたのですが dispatch という仕組みを使うのが都合よさそうでした。
今まで使ったことなかったのですが、このディスパッチ機能を使うとURLごとに App Engine のアプリを切り替えられるようになります。
つまりこのURLは Go 言語で、こっちは Python でみたいなことが柔軟にできます。URLでマッチングができるのでパスごとに切り替えてもいいですし、今回の用途みたいにドメインレベルで挙動を変えるような事も可能です。
ということでリダイレクト専用のアプリを作って、旧ドメインだった場合新しいドメインへリダイレクトするものを立ててみました。
```app.yaml
service: redirector
runtime: python39
handlers:
- url: .*
script: main.app
```
app.yaml に service という名前を定義してあげると、その名前でURLと対応付けが可能になります。
なにも指定しない場合は `default` というサービス名になるみたいです。
Redirect 専用のサービスを作ってあげて、旧ドメインで来たら新ドメインへリダイレクトするということが可能になります。
せっかくなので ブログのシステムと異なる Python + Flask の構成で作ってみました。
```dispatch.yaml
dispatch:
- url: "kimihiro-n.appspot.com/*"
service: redirector
```
あとは dispatch.yaml にURLのパターンを書いてあげて `gcloud app deploy dispatch.yaml` でパターンをデプロイしてあげれば動きます。
どのパターンにもマッチしない場合は従来通り default のサービスが呼ばれます。
これで既存システムを触ることなくリダイレクトの機能を追加することができました。
便利ですね、この機能。色々遊べそうです。