こんにちは。YOSHITAKA(@YOSHITA19704216)です。
特定のページにアクセスしてもまた別のページに飛ばすことをリダイレクトと言います。
急なバグでページが表示されない時などは、この機能を使って解決することができます。
- ページが表示されない時に疑うべき点がわかります。
- 特定のアクセスを違うページに飛ばす基本がわかります。
Contents
アクセスを別ページに飛ばす方法
PC用ページとスマホ用ページが別々に存在する場合「.htaccess 」の振り分け
PC用ページとスマホ用ページが別々に存在する場合、ユーザーエージェントで振り分けるのが一般的です。
振り分ける方法は.htaccess , javascript , php といくつかあります。
この中でも.htaccess で自動的に振り分ける方法は、一番使います。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteRule ^$ /sp/ [R,L] </IfModule>
こちらがとても参考になります。
>>AllAboutPC版とスマートフォン版サイトを自動振り分けする方法
4行目の「RewriteCond %{QUERY_STRING} !mode=pc」
?mode=pc
というパラメーターが
「付与されていないときだけ、リダイレクトする」
「付与されている場合は、リダイレクトしない」
スマホ用(SP)ページからPC用ページにリダイレクトする場合
使う機会はあまりないと思いますが、検索結果でスマホ専用ページが、PC用のページより上位に来たケースを考えます。
スマホページにアクセスして、PCページに飛ばしたい時は、3行目を以下のように変更します。
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
Javascript でスマホとPCを振り分ける
<script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) { location.href = '/sp/'; } </script>
indexOf()メソッドは、指定したキーワードの発見位置を返す。
発見できなければ「-1」を返すので、0より上であればキーワードが発見できたことになります。
iPhoneだったときの処理
<script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') > 0{ //iPhoneだったときの処理 } </script>
iPhoneじゃなかったときの処理
<script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') == -1{ //iPhoneじゃなかったときの処理 } </script>
PHPによるスマホ、PCの振り分け
<?php $ua=$_SERVER['HTTP_USER_AGENT']; if((strpos($ua,’iPhone’)!==false)||(strpos($ua,’iPod’)!==false)||(strpos($ua,’Android’)!==false)) { header(“Location:/sp/index.php”); exit(); } ?>
パラメータ付URLの振り分け
パラメータ付きURLを、パラメータ付きURLへリ
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14108068759
参考にしたページ
>>ユーザーエージェントによってPCとスマートフォン(iPhone / Android)を振り分ける方法いろいろ(PHP / JavaScript / .htaccess等)
>>.htaccessでPCサイトとスマートフォンサイト切り替え
>>JavaScript とかによるブラウザ判定方法のまとめ
>>スマートフォン(iPhone/Android)のページ内振り分け
まとめ
今回はについて.htaccess ご説明しました。
普段ではなかなか使わない機能ですので必要な時に使っていただければと思います。
僕も使う機会が少ないので詳しくはまだ分かっていませんので、正しい説明が全て出来ているかと言うとちょっと分かりないところがあります。
.htaccess はむやみやたらに触るところではありませんので、今回の記事は参考程度にとどめていただければと思います。
あなたの悩み解決の一助になればいいと思って書いてみました。