あと、Route53だとwwwなしの短いURLアクセスできるようにできるとのこと。(こことここ参照)
1.事前作業
・ムームードメインでの独自ドメインの取得・Elasctic Beanstalkでの環境構築
2.Route53での設定
参考URL1と2に書いてありますが、以下の流れ。①Hosted Zoneの作成(Create Hosted Zoneボタンから)
②Record Setの作成(以下の2レコードを作成)
・www無し(Nameに何も入れない)
・www有り(Nameに'www'と入力)
※Alias Targetは対象環境のELBのA Recordを指定
③4つのネームサーバーを控えておく。
Record SetsのType列が'NS'である行の'Value列'に入った4つのサーバ名
これでRoute53側の作業は終わり
3.ムームードメインでの設定(レジストラのネームサーバー情報を更新する)
①コンパネ→ドメイン操作→ネームサーバ設定変更というように遷移する。②「取得したドメインで使用する」を選択し、Route53で控えた4つのネームサーバを入力し保存する。
※注意点としてRoute53でコピーした段階ではネームサーバ名の最後にドットが付くが、本手順で 入力する際にはそのドットを削除すること。そうじゃないと、エラーとなって保存されない。
ex aaaa.awsdns-99.net. → aaa.awsdns-99.net
③ 15分程度待つと、あなたの独自ドメインにwww有りと無しの両方でアクセスできるようになる。
4.CakePHPの設定
ここからは参考URL5,6,7参照のこと。この段階では、www有りと無しの両方のURLでアクセスすることができる。しかし、SEO的にはどちらかに統一したほうがよいとされている。(こことかで)
個人的には短いほうがすきなので、www無しに統一する。
ということで、CakePHP内の.htaccessをいじる。
CakePHPのディレクトリ内には.htaccessがたくさんあるが、どれをいじればよいのかは、どうやら環境によって違うようだ。
参考URL7によると、DocumentRootが設定されている値に依存するようだ。
自分の場合は、[cakephpが入るフォルダ]/app/webroot/直下の.htaccessをいじったら、挙動が変化したので、これをいじっていった。 [cakephpが入るフォルダ]直下の.htaccessをいくらいじっても挙動は変わらなかった。
以下が変更後の状態。(当然mydomainやmydomain.jpはあなたのものに置き換えてね)
3~4行目は、URLにwwwがある場合は、 無しにする部分。
5~6行目は、 ElasticBeansTalkにデフォルトで付与されるURLにアクセスされた場合も、独自ドメインのURLに変更するようにした。
この設定の良いところは、本番環境以外では動作しないところ。つまり、本番環境と開発環境で同じソースを使用できる。開発環境では、www有りとか無しとか考えなくていいからね。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^mydomain\.elasticbeanstalk\.com$ [NC] RewriteRule ^(.*)$ http://mydomain.jp/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
<豆知識>
'%1'はどうやら直近のRewriteCondで正規表現パターン(丸括弧でかこまれた部分)にヒットしたものが入るっぽい。
'$1'はおそらくRewriteRuleの一つ目の正規表現パターンにマッチした部分がはいるっぽい。'$2'は二目の正規表現パターンにマッチしたもの。
Apacheって奥深そう!
[参考URL]
1.Using Custom Domains with AWS Elastic Beanstalk
2.How to Create Alias Resource Record Sets
3.営業でも簡単!Route 53の基本設定
4.Elastic Beanstalkで立ち上げたアプリにRoute53経由で独自ドメイン(サブドメイン無し)を割り振る
5.How to make a 301 redirect for incomming requests from non-www to www in CakePHP
6.Generic non-www to www (and vice versa) 301 redirect using .htaccess
7.Redirect www to non-www
0 件のコメント:
コメントを投稿