mod_rewrite を使った、.htaccessでの携帯サイトの振り分け方法
mod_rewrite をいつも手こずるのでメモ。
携帯サイトとPCサイトの振り分けとか、
携帯サイトは、/m/ フォルダにあるとする。
TOPレベル(ドキュメントルート)の.htaccessに下記を設置
# モバイル専用ディレクトリに設置
# ディレクトリが/m以下でなくで,モバイルの場合は、/mに移動
RewriteEngine On
# ディレクトリが/m以下でない(ループを防ぐため)
RewriteCond %{REQUEST_URI} !^m/.*$
# DoCoMo
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]
# Softbank
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR]
# AU KDDI
RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser
#redirect
RewriteRule ^.*$ /m/ [R]
で、USER_AGENTが、モバイル(偽装を含む)の場合のみ閲覧可。
注意点
- USER_AGENTをチェックしている、最後の行には [NC,OR] を付けない、付けると全てにあてはまる。
- USER_AGENTを偽装されても入れるため、より厳密にする場合はキャリアが出しているIPにそって制限をかける。
- ^.*$や、!^m/.*$ の表示は、^/.*$や、!^/m/.*$ 等で動く場合あり、httpd_conf の設定に依存するので、動かない場合は付けたり消したりして試す。
その他サンプル。
サイトを閉じて、それぞれのTOPを見せる場合。
ドキュメントルートの.htaccessに
#mobile用
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser
RewriteRule ^.*$ /m/index.html [R]#PC用
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_URI} !^.*\.(css|js|jpg|gif)$
RewriteRule ^.*$ /index.html [R]
モバイルのUSER_AGENTの場合は、/m/フォルダにリダイレクト。
PCの場合は、/index.htmlへリダイレクト。
その時、css js jpg gif へのアクセスは許可する。(もちろん、/index.html自体にも)
/m/フォルダに設置 (該当外のアクセスは一旦TOPへ戻す)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo|J-PHONE|Vodafone|SoftBank|KDDI|UP.Browser)
RewriteCond %{REQUEST_URI} !^/m/index\.html$ [NC,OR]
RewriteCond %{REQUEST_URI} !^.*\.(css|js|jpg|gif)$
RewriteRule ^.*$ /index.html [R]
モバイルのUSER_AGENT以外の場合は、/index.htmlへリダイレクト。
モバイルでのアクセスの場合は、css js jpg gif へのアクセスは許可する。(もちろん、/m/index.html自体にも)
面倒なので、USER_AGENTの行を1行で書いてみた。
Category: 未分類 / Tags:
Comments
No Comments
Leave a reply