- 締切済み
【PHP・.htaccess】PCと携帯の振り分けについて
【PHP・.htaccess】PCと携帯の振り分けについて お世話になります。 PHP・.htaccess共に初心者なのですが、 PCサイトと携帯サイトの振り分けで悩んでいるので宜しくお願い致します。 現在の構成が http://sample.com/ ←トップページ(PHPファイルのみ。各トップへ振り分け) http://sample.com/pc/ ←PCトップページ http://sample.com/mo/ ←モバイルトップページ(.htaccessでIP制限。PCからのアクセスはトップへ) ---------------------------------------------------- 振り分けPHP(http://sample.com/) <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://sample/mo/"); exit; }else if(preg_match("/^(J-PHONE|Vodafone|MOT-[CV]|SoftBank)/i", $agent)){ header("Location: http://sample/mo/"); exit; }else if(preg_match("/^KDDI-/i", $agent) || preg_match("/UP.Browser/i", $agent)){ header("Location: http://sample/mo/"); exit; }else{ header("Location: http://sample/pc/"); exit; } ---------------------------------------------------- となって居ますが、都合により http://sample.com/ ←PCトップ モバイルからのアクセスはmoに振り分け。 http://sample.com/mo/ ←モバイルトップページ。(.htaccessでIP制限。PCからのアクセスはトップへ) 上記の形に切り替えたいと思っています、 PHPを使って振り分けをしたいと思っているのですが、 上記の形を再現する事は出来ますでしょうか? また、.htaccessを利用する事により解決が出来るのであれば、 そちらもご教授いただけると幸いです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
PHPでは一部不可能と思います。 .htaccessで RewriteEngine on RewriteCond %{REQUEST_URI} !/mo/ RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank RewriteRule ^(.*)$ /mo/ [R=302,L] RewriteCond %{REQUEST_URI} /mo/ RewriteCond %{HTTP_USER_AGENT} !^DoCoMo RewriteCond %{HTTP_USER_AGENT} !^KDDI RewriteCond %{HTTP_USER_AGENT} !^SoftBank RewriteRule ^(.*)$ / [R=302,L] RewriteRule ^$ /pc/ [L] と思います。 これで動作するなら、振り分け用のPHPファイルは不要です。 http://sample.com/pc/ではなく、http://sample.com/にPCのトップページを作ったほうが良いのでは?と思います。 http://sample.com/にPCのトップページを作った場合のhtaccessは、 RewriteEngine on RewriteCond %{REQUEST_URI} !/mo/ RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank RewriteRule ^(.*)$ /mo/ [R=302,L] RewriteCond %{REQUEST_URI} /mo/ RewriteCond %{HTTP_USER_AGENT} !^DoCoMo RewriteCond %{HTTP_USER_AGENT} !^KDDI RewriteCond %{HTTP_USER_AGENT} !^SoftBank RewriteRule ^(.*)$ / [R=302,L] と思います。
- godcase
- ベストアンサー率33% (4/12)
>URL表示が【http://sample/】のままで、pcのトップページを表示して、モバイルは【http://sample/mo/】に転送したいと思っています。 PCフォルダを作らず、携帯のみを振り分けたらいけるんじゃない?
- yyr446
- ベストアンサー率65% (870/1330)
UserAgent名はたやすく偽装出来るけど、IPアドレスの偽装は困難なので、 PHPではなにもせず、htaccessだけを使って <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes DirectoryIndex index.php ErrorDocument 406 /sample.com/mo/ order deny,allow #docomo deny from 210.153.84.0/24 deny from 210.136.161.0/24 deny from 210.153.86.0/24 deny from 124.146.174.0/24 deny from 124.146.175.0/24 #ezweb deny from 210.230.128.224/28 deny from 121.111.227.160/27 deny from 61.117.1.0/28 deny from 219.108.158.0/27 deny from 219.125.146.0/28 deny from 61.117.2.32/29 deny from 61.117.2.40/29 deny from 219.108.158.40/29 deny from 219.125.148.0/25 deny from 222.5.63.0/25 deny from 222.5.63.128/25 deny from 222.5.62.128/25 deny from 59.135.38.128/25 deny from 219.108.157.0/25 deny from 219.125.145.0/25 deny from 121.111.231.0/25 deny from 121.111.227.0/25 deny from 118.152.214.192/26 deny from 118.159.131.0/25 deny from 118.159.133.0/25 deny from 118.159.132.160/27 deny from 111.86.142.0/26 deny from 111.86.141.64/26 deny from 111.86.141.128/26 deny from 111.86.141.192/26 deny from 118.159.133.192/26 #softbank deny from 1123.108.237.0/27 deny from 1202.253.96.224/27 deny from 1210.146.7.192/26 deny from 1210.175.1.128/25
- yambejp
- ベストアンサー率51% (3827/7415)
<?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://sample/mo/"); exit; }else if(preg_match("/^(J-PHONE|Vodafone|MOT-[CV]|SoftBank)/i", $agent)){ header("Location: http://sample/mo/"); exit; }else if(preg_match("/^KDDI-/i", $agent) || preg_match("/UP.Browser/i", $agent)){ header("Location: http://sample/mo/"); exit; }else{ include "pc用のインデックスページ.htm"; exit; } としてみては?
補足
早速の回答ありがとうございます。 やや説明不足でしたので補足させて頂きます。 教えて頂きました方法だと、 【http://sample/】にアクセスした際、 URLの表示が【http://sample/pc用のインデックスページ.htm】 となってしまうと思うのですが、URL表示が【http://sample/】のままで、 pcのトップページを表示して、モバイルは【http://sample/mo/】に転送したいと思っています。 その様な事は可能でしょうか?