Google App Engine For Javaで、独自ドメインを割り当てたので、301リダイレクトする方法を調べて実装してみました。
リダイレクトの方法
最初は以下のUrlRewriteFilterでリダイレクトを試したのですが、slim3の方はURLがjspになってしまったので今回は見送りました。
UrlRewriteFilter - Rewrite URL's in Java Web Application Servers
従って、今回はjavaでガリガリコードを書いてリダイレクトさせました。
リダイレクト対象サイトと環境
tree-tips
Google App Engine For Javaで開発しています。使用フレームワークはslim3です。
tree-maps
Google App Engine For Javaで開発しています。使用フレームワークはplay framework v1.2.5.3 です。
リダイレクトコード
slim3の場合
@Page("/") public class HogePage extends ScenicPage { @Default public Navigation index() { ・・・・略・・・・ StringBuffer sb = RequestLocator.get().getRequestURL(); if (sb != null) { String url = sb.toString(); if (url.startsWith("http://tree-tips.appspot.com")) { String redirectUrl = url.replace("http://tree-tips.appspot.com", "http://www.tree-tips.com"); response.setStatus(301); response.setHeader("Location", redirectUrl); response.setHeader("Connection", "close"); return null; } } ・・・・略・・・・ } }
slim3の場合はRequestLocatorから現在のURLが取得できます。また、HttpServletResponseはextendsしている親クラスScenicPageのフィールドにあるresponseを直接参照する事ができます。後は普通のservletなので、いつも通りsetStatus・setHeaderで301リダイレクトする事ができます。
play framework v1.2.5.3の場合
public class HogeController extends Controller { public static void index() { ・・・・略・・・・ String rawUrl = "http://" + Http.Request.current().host + Http.Request.current().url; if (rawUrl.startsWith("http://tree-maps.appspot.com")) { String redirectUrl = rawUrl.replace("http://tree-maps.appspot.com", "http://www.tree-maps.com"); Http.Response response = Http.Response.current(); response.status = Http.StatusCode.MOVED; response.setHeader("Location", redirectUrl); response.setHeader("Connection", "close"); return; } ・・・・略・・・・ } }
playの場合はrequest・responseはHttpクラス配下のRequest・Responseオブジェクトから取得します。このrequest・responseはservletのクラスではなくplay独自のラッパークラスです。従ってserveltの時と微妙に使い方が異なるので注意。
301リダイレクトの確認
chromeで簡単に確認できます。旧ドメインでアクセスして、301リダイレクトされている事を確認してみます。chrome developer toolsを開いた状態で旧ドメインにアクセスします。
旧ドメインがStatus 301、新ドメインがStatus 200、と表示されていますね。これで問題無く301リダイレクトされている事が確認できます。
Search Consoleでアドレス変更する
Search Console(旧ウェブマスターツール)で、ドメインが変更された事を設定すると、放置するより早くgoogleがドメイン移行処理をしてくれる可能性があります。
歯車ボタンから「アドレスの変更」をクリックします。
前述の301リダイレクトが設定されている状態であれば、ここで2番の301の項目がパスできます。301できていないと3番・4番の項目の確認が行えない(ボタンが非活性状態のままになる)ので、アドレス変更の前に事前に301リダイレクトを設定しておきましょう。
雑感
Google App Engineは最近PHPとGOもサポートされ、現在はPython、Java、PHP、GOの4言語がサポートされています。GAEは無料で動的サイトが作成でき、デプロイも超簡単です。
ただし使用できないAPIが沢山あったり、インスタンスが停止(GAEのサーバの問題?)する事が結構あったり、Datastoreが尋常じゃない程遅かったり、インスタンスの未使用状態が続くとスピンダウンしてしまったり、様々な制限があります。
制限は多いですが、やはり動的サイトを無料で動かせる点は魅力的です。PHPが正式サポートされた事で、頑張ってWordPressを動かす事もできるそうなので、皆さんも色々試してみるといいと思います!!
- 作者: 古川昇
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2015/07/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
はじめてのSpring Boot―「Spring Framework」で簡単Javaアプリ開発 (I・O BOOKS)
- 作者: 槇俊明
- 出版社/メーカー: 工学社
- 発売日: 2014/11
- メディア: 単行本
- この商品を含むブログ (8件) を見る
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築
- 作者: 綿引琢磨,須江信洋,林政利,今井勝信
- 出版社/メーカー: 翔泳社
- 発売日: 2014/11/05
- メディア: 大型本
- この商品を含むブログ (5件) を見る