mod_rewriteについて調べたやつまとめ
mod_rewriteについて調べる機会があったのでメモ…っていうかリンク集みたいになってる。
業務的にはわたしはApacheいじれる立場ではないので、上司から依頼されて調べたやつのまとめって感じですが…
mod_rewriteとは
Webサーバーの拡張機能。
Webサーバー内でURLの書き換えを行う。リダイレクト。
例えば以下のようなことができる。
- 特定IPからのアクセスのみ許可
- ある時間帯だけメンテナンス画面へリダイレクト
.htaccessによるリダイレクト徹底解説
http://www.cherrypieweb.com/weblog/technical/20131017121752.php
マニュアル
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
英語つらい
基本の使い方
Apacheのmod_rewriteモジュールの使い方を徹底的に解説
http://oxynotes.com/?p=7392
全てのWeb担に捧げるRewrite設定集
http://www.techscore.com/blog/2014/12/16/%E5%85%A8%E3%81%A6%E3%81%AEweb%E6%8B%85%E3%81%AB%E6%8D%A7%E3%81%92%E3%82%8Bwrite%E8%A8%AD%E5%AE%9A%E9%9B%86/
・自社以外の接続はメンテナンスページに飛ばしたい
・URLをwwwありに統一したい(URLの正規化)
・必ずHTTPSで接続させたい
・スマホ・ガラケーは専用のページに振り分けたい
・ページが存在しない場合、404ページに飛ばしたい
環境変数
調べるといろいろな方法があるように見えたが、
とりあえずこんな感じで動いた。
# X_HOGEに1をセット RewriteRule ^ - [E=X_HOGE:1] # X_HOGEが1なら/index.htmlへリダイレクト RewriteCond %{ENV:X_HOGE} 1 RewriteRule ^(.*)$ /index.html [L]
mod_rewriteでApache環境変数を一時変数として利用する
http://qiita.com/hkusu/items/0caa921ad4fb1cb9d300
・スマートフォンまたはFacebookクローラからのアクセスである場合は、それぞれ表示するロゴや適用するCSSを変更する
・静的リソースに対するアクセスの場合は、ローカルサーバに無い画像をAmazon S3 から取得する(リバースプロキシ)
mod_rewriteのRewriteCondで、SetEnvIfの環境変数を利用する
http://netmark.jp/2009/03/mod-rewriterewritecondsetenvif.html/comment-page-1
mod_rewrite で独自の変数を使う方法
http://www.sssg.org/blogs/naoya/archives/2053
・変数に値をセット・変数の値を利用
ApacheのSetEnvで設定した環境変数は、RewriteCond,SetEnvIfでは参照できない
http://server-setting.info/centos/setenv-rewritecond-dont-work.html
(↑で問題になってたのはこのこと?)
・RewriteCond,SetEnvIfでは参照できないことの確認と回避方法
cookie
とりあえずこんな感じで動いた。
# hogeが「空であれば」hogeに1をセット(ドメイン指定なし) # なんでこの書き方で「空であれば」になるかは分からない。 RewriteCond %{HTTP_COOKIE} !hoge= [OR] RewriteRule ^ - [CO=hoge:1:;] # hogeが1であれば/index.htmlにリダイレクト RewriteCond %{HTTP_COOKIE} hoge=1 RewriteRule ^(.*)$ /index.html [L]
mod_rewriteで特定のクエリーストリングをcookieに変換するメモ
http://www.teradas.net/archives/6213/
(Un)setting a cookie in mod_rewrite
http://stackoverflow.com/questions/10000587/unsetting-a-cookie-in-mod-rewrite
英語だが、ドメインを指定したくないときどうすんの?的な話だと思う