RwriteCond、RewriteRule・・・使ったタイミングでは覚えているんですが、ちょっと時間が空くと、「あれ?」となってしまうことが多いのでメモしておきます。
mod_rewriteですが、まずは動くことを確認するために下記のコマンドを実行します。
※環境はCentOS6.xです。
[shell]
httpd -M
[/shell]
ずらーっと出てくると思いますが、表示されている中に下記の内容があるかを確認します。
[shell]
rewrite_module (shared)
[/shell]
面倒な方は、下記のコマンドであるかを確認してください。
[shell]
httpd -M |grep rewrite_module
[/shell]
この時点で、表示されていない場合には利用中のapacheのモジュールとしてmod_rewriteが読み込まれてません。httpd.confの設定を変更し、利用できるようにしましょう。
上記の流れで使えることが確認できたので・・・実際にmod_rewriteを使ってみます。
設定する箇所は、httpd.confやvirtualhost.conf、.htaccessなどがありますが、今回は.htaccessの設定で行っていきます。
はじめに、mod_rewriteを利用する場合に必要な設定を.htaccessの中に記述します。
これを書かないと・・・動かないです。
[shell]
RewriteEngine On
[/shell]
では、実際に設定する内容を利用パターンごとに記載していきます。
強制的にHTTPSへのリダイレクト
http://localhostへの接続を強制的に、https://localhostに変更する場合に利用できます。
[shell]
RewriteCond %{HTTPS} off
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
[/shell]
強制的にHTTPSへのリダイレクト(ELB)
HTTPSでのアクセスをELBやPoundなどで受け付け、HTTPS(443)で受けたアクセスをサーバ(apacheなどWebサーバが稼働)へ、HTTP(80)で渡している場合に利用できます。
[shell]
RewriteCond %{X-Forwarded-Proto} !^https$
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
[/shell]
ここの内容は追記、または別記事で増やしてきます。
(たぶん、仕事で使った内容になると思います。)
コメント