purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

apacheのリダイレクトの方法あれこれ

リダイレクトは例えば.htaccess

Redirect permanent /foo/ http://www.example.com/bar/

こんな風に書いたりするが

apachemod_rewriteのモジュールが入っていれば、条件指定が出来るようになる

つまりこんな書き方が出来るようになる。

# 機種判別用の変数定義 (window phoneとか入って無いけどそれはアレってことで
SetEnvIf User-Agent "iPhone" UA=sp
SetEnvIf User-Agent "Android" UA=sp

# URLに/sp/ が含まれていたら
RewriteCond %{REQUEST_URI} ^/sp/
# 上で設定したUAという変数の値がspでなかったら
RewriteCond %{ENV:UA} !^sp$

# リダイレクトの場合こうする
RewriteRule ^sp/(.*)$ http://www.exsample.com/$1 [L]

# 自ドメイン内でリダイレクトする場合はこれでも良い
RewriteRule ^sp/(.*)$ http://%{HTTP_HOST}$1 [L]
# これだと上手く行かない
RewriteRule ^sp/(.*)$ /$1 [L]