モバイル専用ページやPC専用ページへのアクセス制御
モバイル専用ページ(スマートフォンや携帯電話専用ページ)にパソコンからアクセスした場合や、その反対にスマートフォンやガラケーでパソコン専用ページにアクセスした場合は色々と問題があります。この為、アクセスの制御や各種の設定方法を紹介します。
スマートフォン専用ページとは
スマートフォン用に最適化されたサイトで、ビューポートの設定がされていて、スマートフォンでも拡大表示したり、横スクロールしなくても、問題なく見ることができるページの事です。
携帯電話(ガラケー)専用ページとは
携帯電話専用ページ(ガラケーサイト)とは、ガラケーで見ることを意識して作ったページで、文字を主体にしたページです。記述言語はCHTMLやXHTMLで、1ページの容量は約5KB以内で、画像や音楽や絵文字を使わないようにすれば、ほぼ全ての携帯端末専用に使えるページができます。
パソコン専用ページにスマートフォンからアクセスする問題点
パソコンだけに表示するように考えられた専用ページに スマートフォン楽天 からアクセスすると、ビューポートが設定されていないので、見にくくて、拡大や横スクロールが必要で何のメリットもありません。
SEOの観点から見れば、パソコン用のページとスマートフォン用のページの内容(コンテンツ)がほぼ同じ場合は、同じコンテンツを複数のページで公開しないという、ウェブマスターガイドラインに抵触します。
このため、パソコン専用ページには、スマートフォンからアクセスできないようにしておくか、後述のスマートフォン専用ページをパソコンの検索から除外しておくのが良いと思います。
ガラケー専用ページにパソコンからアクセスする問題点
携帯電話専用ページにパソコンからアクセスすると、モバイル(ガラケー)用のグーグルアドセンスは表示されないようになっています。広告を出す側から見れば、広告のある普通のページを見てもらいたいものです。
また、携帯電話専用ページをパソコンで見ても、見にくいだけで何のメリットもありません。
また、同様に、SEOの観点から見れば、パソコン用のページとガラケー用のページの内容がほぼ同じ場合は、同じコンテンツを複数のページで公開しないという、ウェブマスターガイドラインに抵触します。
スマートフォンや携帯電話専用ページをパソコンの検索から除外する
SEOの観点から見ると、パソコン用のページとモバイル用のページのテキスト内容がほぼ同じ場合は、同じコンテンツを複数のページで公開してはいけないという、ウェブマスターガイドラインに抵触します。
これを避けるには携帯電話専用の該当するページをパソコンの検索から除外します。これをするには次のようにします。
モバイル専用の該当ページのヘッドタグ内にlink要素を使って「rel="canonical"」と記述し、href属性で指定したページを正式なURLとして検索エンジンに登録してほしいと伝えることができます。このようにすることで、希望しないURLの方が検索エンジンに登録されてしまう可能性を減らすことができます。
<link rel="canonical"http://hogehoge.jp/***/***.html />
パソコン専用ページでモバイル版の存在を知らせる
パソコン専用のページのヘッドタグ内に次の記述をして、そのページに該当するモバイル専用ページ(スマートフォン専用ページなど)がある事を検索ロボットに知らせることができます。
<link rel="alternate" media="only screen and (max-width: 640px)" href="http://hogehoge.jp/sp/***html" />
サーチエンジンにガラケーサイトを認識させる方法
ガラケー用のページには、モバイルサイトマップを作成して、モバイル専用ページだと、サーチロボットに教えてやることが有効です。
また、 サーチエンジンにガラケーサイトを認識させるにはパソコン専用ページのheadタグ内に、link rel="alternate" media="handheld"----とガラケー専用の該当ページを指定すると、サーチエンジンによって、ガラケーページに正しくリンクすることができます。
<link rel="alternate" media="handheld" href="http://hogehoge.jp/m/hoge.html" type="text/html" />
ガラケー専用の各ページにも自分自身のアドレスを記述すると、サーチエンジンがモバイルサイトだとちゃんと判別するとのことです。
.htaccessを使ったスマートフォンサイトへの振り分け
スマートフォン用サイトとパソコン用のサイトを作って、スマートフォンでアクセスした人を自動でスマートフォンページへ飛ばす方法を紹介します。サイトのルートディレクトリに次のような内容の.htaccess ファイルを置きます。
しかし、この方法はスマートフォンでは普通のページも見られなくなります。最近はスマートフォンでパソコン専用のページを見る必要はないでしょう。
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteRule ^$ /m/ [R,L]
スマートフォンでトップページにアクセスするとユーザーエイゼント(HTTP_USER_AGENT)にiPhoneとかAndroid.*MobileとかWindows.*Phoneとかの文字列を含んでいると、http://ドメイン/m/ のファイルつまりトップページに飛ばすのです。フラグの[NC]は大文字と小文字の区別をしないという意味です。
!mode=pc は、アドレスの末尾に「?mode=pc」という文字列が付加されていない時だけに適用するという意味です。
「^$」の「^」は行の最初を、「$」は行の最後を表わします。つまり何も無い(http://ドメイン)つまり、トップページということです。「[R]」は転送の意味です。[L]は終わり、つまり最終行という意味です。
この方法はスマートフォンでトップページにアクセスしてきた場合だけスマートフォンのトップページに飛ばす方法です。それ以外は動作しません。
htaccessでパソコンからガラケーへのアクセス制御(ユーザーエージェント)
携帯端末(ガラケー)とモバイル検索ロボット以外(つまりパソコンと普通のウェブ検索ロボット)からのアクセスをユーザーエージェントで制限します。その.htaccessファイルの内容は次の通りです。後述のIPアドレスで制御する方法より簡単ですのでこちらをお勧めします。
「%{}」はサーバー変数を取得しなさいという意味です。「!」は否定の意味です。[NC]は「No Case」大文字と小文字の区別無しという意味です。[F]は強制的にアクセス禁止 (Forbidden) にします。 HTTP レスポンスの「403 : Forbidden」を返します。
確認はFirefoxのアドオンでユーザーエージェントを偽装してモバイルページにアクセスしてみます。ちゃんとモバイルページが表示されたり403画面が表示されたりしていればOKです。
でも、この方法はサーチロボットも巡回できないので、ウェブマスターツールでエラーの警告が出ます。
RewriteEngine On RewriteBase /m/ RewriteCond %{HTTP_USER_AGENT} !(DoCoMo|KDDI|Up\.Browser|Softbank|Vodafone|J-PHONE|DDIPOCKET|Nokia|MOT-|L-mode|Mobile|J-SRD|J-MBS|moba-crawler|froute\.jp) [NC] RewriteRule ^(.*)$ /403.html [F]
リダイレクト転送する場合(問題あり)
もし、リダイレクトにするのなら、最後の行を次のようにします。[R]は強制的にリダイレクト「Redirect」するという意味です。302リダイレクトになります。[R=301]とすると301リダイレクト(永久転送)になります。[L]は書き換えが行われたら終了「Last」するという意味です。
302リダイレクトで全てのページを、あるページに転送すると、グーグルウェブマスターツールのモバイルサイトマップでエラーになるのを確認しました。
RewriteRule ^(.*)$ /hoge.html [R,L]
PCからガラケーサイトにアクセスした場合、各PCページに転送する設定
上記のようにPCからモバイルサイトにアクセスした場合、403でアクセス禁止にしても良いのです。しかし、更に親切にパソコン用の該当ページに転送するのが、もっと親切でグーグルも推奨しています。携帯電話専用ページが少ない場合は簡単です。
携帯電話専用ページが多い場合は、携帯電話専用ページのディレクトリ構造をパソコン用ページと同じにしないと難しいでしょう。
RewriteEngine On RewriteBase /m/ RewriteCond %{HTTP_USER_AGENT} !(DoCoMo|KDDI|Up\.Browser|Softbank|Vodafone|J-PHONE|DDIPOCKET|Nokia|MOT-|L-mode|Mobile|J-SRD|J-MBS|moba-crawler|froute\.jp) [NC] RewriteRule ^$ /index.php [R,L] RewriteCond %{HTTP_USER_AGENT} !(DoCoMo|KDDI|Up\.Browser|Softbank|Vodafone|J-PHONE|DDIPOCKET|Nokia|MOT-|L-mode|Mobile|J-SRD|J-MBS|moba-crawler|froute\.jp) [NC] RewriteRule ^index\.php$ /index.php [R,L] RewriteCond %{HTTP_USER_AGENT} !(DoCoMo|KDDI|Up\.Browser|Softbank|Vodafone|J-PHONE|DDIPOCKET|Nokia|MOT-|L-mode|Mobile|J-SRD|J-MBS|moba-crawler|froute\.jp) [NC] RewriteRule ^earth\.php$ /asn/earth.php [R,L] * * * * RewriteCond %{HTTP_USER_AGENT} !(DoCoMo|KDDI|Up\.Browser|Softbank|Vodafone|J-PHONE|DDIPOCKET|Nokia|MOT-|L-mode|Mobile|J-SRD|J-MBS|moba-crawler|froute\.jp) [NC] RewriteRule ^(.*)$ /403.shtm [F]
上記のように携帯電話(モバイル)やモバイル用のサーチロボットでなかったら、パソコン用の各ページに転送するように記述します。[R]は302転送になります。[L]は書き換えが終わったら終了するという意味です。
このどれにも該当しなかったら、最後に403ページを表示します。何でこんなに面倒な書き方をするのかと言うと、RewriteCondの条件に合致したら、RewriteRuleは1行しか適用されないからです。
htaccessでパソコンからガラケーへのアクセス制御(IPアドレス)
携帯端末とモバイル検索ロボット以外(パソコン)からのアクセスをIPで制限します。この.htaccessファイルの内容は次の通りです。表示を許可するIPアドレスは1行だけ表示してあとは割愛しています。実際はもっとたくさんあります。
追加した1行目はこのアクセス制限で403エラーとなった場合に飛ばす(表示する)ファイルを指定します。最後の行は自分のIPアドレスです。
ErrorDocument 403 /403.html order deny,allow deny from all #http://www.nttdocomo.co.jp/service/imode/make/content/ip/ allow from 210.153.84.0/24 . #http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html allow from 210.230.128.224/28 . #https://creation.mb.softbank.jp/web/web_ip.html allow from 123.108.236.0/24 . #http://www.willcom-inc.com/ja/service/contents_service/create/center_info/index.html allow from 61.198.128.0/24 . #http://developer.emnet.ne.jp/ipaddress.html allow from 117.55.1.224/27 . #https://www.google.com/support/webmasters/bin/answer.py?answer=34647&topic=9346 allow from 72.14.199.0/25 . #https://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html allow from 124.83.159.146 . #https://helpguide.livedoor.com/help/search/qa/grp627?id=3399 allow from 203.104.254.0/24 #https://help.goo.ne.jp/help/article/1142/ allow from 210.150.10.32/27 . #http://search.froute.jp/howto/crawler.html allow from 60.43.36.253 #http://crawler.dena.jp/ allow from 202.238.103.126 . #自分のIP allow from ***.**.***.**
自動でhtaccessファイルを作成する
このhtaccessファイルを作成するのは大変です。これを自動で作成するサイトがあります。とても簡単に作成することができます。IPアドレスは時々変更がありますので、定期的にチェックする必要があります。