ぶろろぐ
気になったことを書き綴る。

mod_rewriteのメモ

7月 22nd 2010 in Technical SIDE

mod_rewriteでいくつかやったので、それをメモしておく。
以下2行を忘れずに。

RewriteEngine on
RewriteBase /

ホスト名の統一

RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ http://www.hoge.com/$1 [R=301]

RewriteCond %{HTTP_HOST} ^(hoge\.com)(:443)? [NC]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://www.hoge.com/$1 [R=301]

www無しをwww有りに統一するやり方。逆の場合には、中身を入れ替える。

特定ページへのHTTPSへのリダイレクト

httpでアクセスされたらhttpsへ転送するページ

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(hoge\/.*|hoge\.php)$ https://%{HTTP_HOST}/$1 [L,R=301]

httpsでアクセスされたらhttpへ転送するページ

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(hoge\/.*|hoge\.php|.*\.jpg|.*\.gif|.*\.png|.*\.css|.*\.js)$ – [C]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)?$ http://%{HTTP_HOST}/$1 [L,R=301]

ディレクトリhogeとhoge.phpを自動的にhttpsへリダイレクト。その際に、画像やJS、CSS等の外部ファイルなどは、除外指定に含んでおく。
除外しないと、htmlやphpだけhttpsで、内部の画像類などがhttpで通信してしまうため、SSLがエラーになってしまう。また、その際にJS等の中身で、読み込みエラーなどが発生していると、その部分がhttpで読み出したりするので、エラーが発生するので、コーディングの際には注意すること。

課題

RewriteCond %{SERVER_PORT} ^443$
でなく
RewriteCond %{HTTPS} off
等で処理できると、きれいになるのだが、ちゃんと動作しなかったのは何でだろ?
ほかにも
RewriteCond %{REQUEST_URI} hoge.php$ [OR]
RewriteCond %{REQUEST_URI} hoge/
とかで、
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
とかけるとシンプルになるのだが・・・。いかんせん、やったサーバではうまく動作しなかった。orz


Trackback URL



required



required - won't be displayed


Your Comment:

ドメイン更新でのぞいたら、しれっと準備中から変更されて、金額とかが発表されていた。 現在特に不満はないけど、時折遅くなる点とかいろいろあるから、ちょっぴり気になります。 金額的に、年額9,900円なので、全然許容範囲内。ただ、すごく・・・すごくいろんな人が使うんだろうなあ~ということを考えると、サーバ会社からすれば、超優良顧客<アクセス数もリソースも全然無いw>な私は無意味な気もしないでもないw いろいろやるなら、CORE-ONEで本気で遊びたいけどね。ターミナル使えるレンタルサーバは貴重ですし!

Previous Entry

カテゴリー