[Apache] 流石にオリジンドメインへのアクセスはリダイレクトさせよう

By | 2018年7月2日

 CloudFrontを導入後の処理として、うっかり旧ドメイン(オリジンのドメイン)をリダイレクトさせる設定を忘れていました。

そのため、https://nonameserver.orz.hm の方が検索結果にヒットしています。これはよくないのでリダイレクトさせてCloudFrontのアドレスであるhttps://noname.work に飛ばしてあげる必要があります。

 しかしこのラズパイサーバーはクラウドストレージとしても利用していて、その際にnonameserver.orz.hmのドメインが必要になります。なのでWordPressに来たユーザーがnonameserver.orz.hm 宛てにアクセスしてきた場合にリダイレクトする設定を入れます。

 

CloudFront側


 CloudFront側では手始めにカスタムヘッダを作成します。そのためにオリジンサーバーの設定に移りましょう。

なぜカスタムヘッダを作成するかというと、ユーザーが直接オリジンサーバーにアクセスしたのかCloudFrontを経由してアクセスしているのかが分からないためです。

CloudFront経由では一部のヘッダ情報が書き換わるのでそれを利用する方法もありますが、WordPress側の機能に影響が無いとも言い切れないのでカスタムヘッダを作成することをおすすめします。


 オリジンサーバーの設定ページでカスタムヘッダを設定できるので、分かりやすい名前と値を入れて保存しましょう。

今回はCLOUD_FRONT_ACCESSというカスタムヘッダ内にTRUEという値を入れました。

 

オリジンサーバー側

リダイレクトの設定は.htaccessやhttpd.conf、Virtualhost.confのどれを利用してもかまいません。
環境に応じて編集してあげましょう。

# redirect
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP:CLOUD_FRONT_ACCESS} !TRUE
RewriteCond %{REQUEST_URI} !(^/owncloud|apc/)
RewriteRule ^(.*)$ https://noname.work/$1 [R=301,L]

 今回はこんな感じに編集しました。
もしもCLOUD_FRONT_ACCESSというカスタムヘッダがTRUEに一致せず、
かつドメイン名のすぐ後ろにowncloudまたはapcが付いていない場合は
https://noname.work/URIに301コードをつけてリダイレクトします。

ここでカスタムヘッダを使わずに、

RewriteCond %{HTTP_HOST} nonameserver.orz.hm
RewriteCond %{REQUEST_URI} !(^/owncloud|apc/)
RewriteRule ^(.*)$ https://noname.work/$1 [R=301,L]

なんて書くとリダイレクトループしますのでご注意を。

あくまでCloudFrontがアクセスする先はnonameserver.orz.hmというオリジンサーバー宛てなので、ドメインによる判別はループの原因となります。

設定が済んだらApacheをrestartして解決です。

あまり長々と書くような内容ではないと思うので今回の記事は短めにさっくり終わらせます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)