Plains フリーランス フロントエンドエンジニア

備忘録 2017.07.06

(メモ)スマホとPCを判別してリダイレクトする.htaccessの書き方

よく使う.htaccessの記述方法です。

スマホでアクセスした際にスマホ向けサイトにリダイレクト

スマホ向けサイトのURLが第二階層の"sp"の場合。

RewriteEngine On
RewriteCond %{REQUEST_URI} !/sp/.*$
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone) [NC]
RewriteRule ^(.*)$ sp/$1 [R]
RewriteBase /

AndroidスマホとAndroidタブレットを区別するためにユーザーエージェントAndroidの後ろに「.*Mobile」を付与している。Windowsも然り。

PCでスマホ向けサイトにアクセスした際にPC向けサイトにリダイレクト

今度は逆にPCブラウザでスマホ向けサイトにアクセスした際にPC向けサイトにリダイレクトする.htaccessの書き方。
前述の記述に続けて下記を追加する。

RewriteCond %{REQUEST_URI} /sp/.*$
RewriteCond %{HTTP_USER_AGENT} !(iPhone|iPod|Android.*Mobile|Windows.*Phone) [NC]
RewriteRule ^sp/(.*)$ $1 [R]
RewriteBase /

補足

“.*”は任意の文字列を表す表現ですべての文字列にマッチする。

“$1″は変数で、値は前方の”(.*)”に当てはまる部分が代入されている。

RewriteCond、RewriteRuleの末尾に記載されている”[…]”の意味

[NC]・・・大文字小文字を区別しない

[R]・・・強制的にリダイレクト

[L]・・・条件にマッチした場合そこで終了(リダイレクトされるがURLが変わらない)

[OR]・・・後に続く複数のRewriteCond条件をor関係で結ぶ

Go to Top