よく使うhtaccess
cman.jp cman.jp > よく使うhtaccess > 解説・自動作成 > リダイレクト_スマホ

htaccessによるリダイレクト(スマホ,携帯,OS,ブラウザ)

ホームページへのアクセスには、アクセスしたパソコンのブラウザやOSの情報が含まれています。この情報をユーザーエージェント(User-Agent)と言います。
ユーザエージェントとは?」をご確認ください。

htaccessでユーザーエージェントの判定することで、特定のブラウザやOS、モバイル(スマートフォンや携帯電話、タブレットなど)からのみアクセスをリダイレクトすることができます。
ただし、ユーザーエージェントは偽装も可能なため必ず正しい情報とは限りません。

広告

ユーザエージェントによるリダイレクト 作成

以下の自動作成はディレクトリ転送を想定し生成しています。
ディレクトリ転送以外の場合は生成されたhtaccessを加工してください。

スマホ
携帯電話
スマートフォン
タブレット
携帯(ガラケー)
OS
Windows
MacOS,iOS
Android
Linux系OS
ゲームOS
携帯OS(ガラケー)
ブラウザ
IE
Chrome
Firefox
Safari
Opera
その他
キーワード

ユーザエージェントに以下のキーワードを含む場合


大文字小文字

リダイレクト先

上記条件でリダイレクトするパスを指定してください。

アクセス制限の場合は「アクセス制限(スマホ,OS,ブラウザ)」をご利用ください。

【入力の意味】 ユーザエージェントの内容が ① に該当(②の基準)する場合は、③ へリダイレクトする
ページTOP

ユーザエージェントによるリダイレクト 解説

ユーザエージェントについては「ユーザエージェントとは?」をご確認ください。

特定デバイスやブラウザのアクセスのみリダイレクトする

構文例
SetEnvIf       User-Agent "iPhone"          ua_device=smart
SetEnvIfNoCase User-Agent "Android"         ua_device=smart
SetEnvIf       User-Agent "Safari"          ua_browser=safari
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^mobile/.*$
RewriteCond %{ENV:ua_browser} safari [OR]
RewriteCond %{ENV:ua_device} smart
RewriteRule ^(.*)$ mobile/$1 [R,L]

上記は次を意味しています

「iPhone」「Andoroid」端末 または 「Safari」ブラウザ からのアクセスを「/mobile/」にリダイレクトする。


RewriteCondを以下のように変更すると解釈が変わります。

RewriteCond %{REQUEST_URI} !^mobile/.*$
RewriteCond %{ENV:ua_browser} safari [OR]
RewriteCond %{ENV:ua_device} smart

とした場合、「iPhone」「Andoroid」端末 かつ「Safari」ブラウザを「/mobile/」にリダイレクトする。

SetEnvIf
SetEnvIfNoCase
SetEnvIf  User-Agent  "iPhone"  ua_device=smart
+--①--+ +---②---+ +--③--+ +------④------+
①SetEnvIf
「SetEnvIf」  :大文字と小文字が区別されます
「SetEnvIfCase」:大文字と小文字が区別されません
②判定する要素
OSやブラウザなどの情報はユーザエージェントに保管されているため「User-Agent」としています
③キーワード
判定要素②を検索(含まれているかなど)するキーワード
正規表現で指定します
④環境変数の設定
条件に一致する場合、環境変数に値を設定しています
サンプルでは「ua_device」に「smart」を設定しています(後で判断に使用)
環境変数の名前は既存と重複しなければなんでもかまいません。
RewriteEngine

Rewrite機能の使用(ON)と未使用(OFF)を指定します

RewriteBase

Rewrite処理のベースになるパスを指定します
「/」の場合は、homeディレクトリとなります

RewriteCond
RewriteCond  %{REQUEST_URI}  !^mobile/.*$
+---①----+ +-----②-----+ +----③-----+
②判定する要素

例は環境変数「REQUEST_URI」を判定対象としています。
REQUEST_URI:アクセスされたURI(サーバ内のパス)が格納されています。

たとえば、
「http://htaccess.cman.jp/explain/redirect_mobi.html」の場合は、
「/explain/redirect_mobi.html」が設定されています。

③キーワード

判定要素②を検索(含まれているかなど)するキーワード
正規表現で指定します。

例は「mobile/」で始まらない場合に真となります。
→リダイレクト先へのアクセスは対象外としている


RewriteCond  %{ENV:ua_browser}  safari  [OR]
+---①----+ +------②-------+ +-③-+ +-④-+
②判定する要素

例は環境変数「ENV:ua_browser」を判定対象としています。
ua_browser:事前にSetEnvIfで設定された環境変数

③キーワード

判定要素②を検索(含まれているかなど)するキーワード
正規表現で指定します。

④条件オプション

「OR」:次行のRewriteCondを「または(or)」で指定します(未指定は「かつ(and)」となります
「NC」:大文字と小文字を区別しません

RewriteRule
RewriteRule  ^(.*)$  mobile/$1  [R,L]
+---①----+ +-②-+ +---③--+ +-④-+

「RewriteCond」で該当する場合に、リダイレクトするURI情報を指定します

②リダイレクト元URI

正規表現でリダイレクト対象のURIを指定します。
例では、「^(.*)$」ですべてのアクセスを対象としています

③リダイレクト先URI

正規表現でリダイレクト先のURIを指定します。
例では、「mobile/$1」で「mobile」ディレクトリに転送を指定しています

④条件オプション

「R」:リダイレクトを表します。
「L」:条件に該当する場合、以下のRewriteRuleを判定しない(終了)

ページTOP

ユーザエージェントによるリダイレクト サンプル

以下のボタンでサンプルをご確認いただけます。

サンプル
ページTOP
広告
QrCode
このページのURL
スマートフォン・タブレット運営:株式会社シーマン