cutmail's blog

write the code

mod_rewriteによるアクセス振り分け

携帯サイトを開発する上でアクセス振り分けが重要になってきます。
いろいろなやり方があると思いますが、
一番導入しやすいのはmod_rewriteを使った方法ですかね。

mod_rewriteって?

apacheのモジュールの一つで、正規表現により動的ページを静的ページに見せることができます。
例として、

http://hogehoge.com/?p=123

のようなURLを

http://hogehoge.com/123.html

のように置き換えることができます。

携帯からのアクセスを振り分けるには?

方法は二つあり、

  1. httpd.confに記述する
  2. .htaccessに記述する

のどちらかになります。

httpd.confを編集することができない環境の場合は、
振り分けたいディレクトリに.htaccessというファイルを作成し、以下のソースを記述します。

.htaccessへの記述

RewriteCond %{HTTP_USER_AGENT} (DoCoMo|Vodafone|J-PHONE|SoftBank|UP\.Browser|KDDI)
RewriteCond %{REQUEST_URI} !^/m/
RewriteRule ^(.*)\.html$ /m/$1.html [L]

1行ずつ解説。

  1. 書き換えルールの設定。
    「HTTP_USER_AGENTにDocomo・Vodafone・J-PHONE・SoftBankUP.Browser・KDDIという文字列が含まれていたら」という設定。
  2. これも書き換えルールの設定。
    m/以下のファイルにアクセスがあった場合にはURLの書き換えを行わないという設定。
  3. 実際の書き換え処理。
    この場合、http://hogehoge.com/test.htmlというURLに携帯からのアクセスがあった場合、
    http://hogehoge.com/m/test.htmlに飛びますが、出力される内容はhttp://hogehoge.com/test.htmlになります。

httpd.confへの記述

記述するファイルは違いますが、こちらも同様に記述することで振り分けが可能になります。