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

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

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

ユーザエージェントとは?

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

広告

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

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

スマホ
携帯電話
OS
ブラウザ
その他
キーワード

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


大文字小文字

リダイレクト先

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

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

【入力の意味】 ユーザエージェントの内容が ① に該当(②の基準)する場合は、③ へリダイレクトする
結果表示
ユーザーエージェントを最低1つは入力してください。

【注意】生成されたhtaccessは保証しておりません。必ず、動作確認を行ってからご利用ください。

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

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

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

構文例
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を判定しない(終了)

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