リダイレクトする.htaccessの設定

サーバ

ここでは、ホームページの移転時などで転送に使用する.htaccessを使用したリダイレクトの設定を記載します。サーバ環境は.htaccessが利用できる前提ですので、apacheの場合の設定内容を合わせて記載しておきます。

apacheの設定(前提)

apacheのconfig(/etc/httpd/conf/httpd.conf)に、.htaccessを設置したいディレクトリの「AllowOverride」のオプションを、「All」にしておきます。(逆に、無効化したい場合は、「None」を設定します) 具体例として、ルートディレクティブ(/)のAllowOverrideのオプションをAllにした場合の例を以下に記載しておきます。

<Directory />
  Allowoverride All
</Directory>

こちらの設定が済みましたら、apacheのサービスを再読み込みしておきます。
なお、All以外にも細かく指定するオプションはありますので、必要に応じて設定ください。

.htaccessファイルの設定

apache側の設定が終わりましたら、実際に.htaccessファイルを準備します。
ここでは、ホームページを新しく作成したが、URLが変わってしまって、古いホームページにアクセスがあったものを新しいホームページに自動で転送する設定を想定しています。

具体的には、以下のように記載します。

RewriteEngine On
RewriteCond %{http_host} ^www.hogehoge.dassyi.com
RewriteRule ^(.*) https://blog.dassyi.com/ [R=301,L]

http://www.hogehoge.dassyi.com にアクセスがあった場合に、https://blog.dassyi.com/ に転送する設定になっています。「^(.*)」は、正規表現になり、http://www.hogehoge.dassyi.com配下のどのようなURLにアクセスしても、https://blog.dassyi.com/ に転送することを意味しています。よくわからない方は、このように記載しておけば、ぼぼ実施したいことができると思います。

あと、「R=301」の部分ですが、301は恒久的に移行することを意味します。つまり、新しいサイトが今後はメインになる場合は、この設定をしておくとSEO的に良いです。なお、一時的にサイトを作成した場合は、302を設定します。

動作確認

.htaccessを設置しましたら、apacheのサービスの再起動は不要ですので、そのまま動作確認をします。ブラウザで古いホームページにアクセスして、新しいホームページが表示されれば正しく動作していることが確認できます。
もし、うまく動かない場合は、apacheのエラーログ等を確認し、問題点を確認しましょう。

応用編(常時SSL化)

応用というほどのものではありませんが、リダイレクトでよく使用するケースとして、httpでアクセスがあった場合に、httpsへリダイレクトしたいケースがあります。いわゆる常時SSL化というやつです。

常時SSL化をするのであれば、.htaccessファイルに

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

を記載すればOKです。

設定後、http:// でアクセスしても、https:// に切り替われば成功です。
なお、apacheのサービスの再起動や再読み込みは必要ありません。

WordPress環境の.htaccessによる常時SSL化の注意点

ちなみに、WordPressの環境の場合、標準で.htaccessファイルが存在しますが、常時SSL化をするには、必ず標準で入っている「# BEGIN WordPress 」よりも上に、上記のリダイレクトの設定を記述しないとうまく動きません。

これは、WordPress標準のルールに[L]フラグがあり、これがあるとルールにマッチすると次へ進まずにそこで終了する、という動きになるためです。(LはLastの意味)

つい、.htaccessファイルの最終行に追加してしまいがちですが、読み込みの順番があることにご注意ください。


今回はここまでです。最後までお読みいただきありがとうございました。