タグ別アーカイブ: sirius

siriusがiphoneサイトとpcサイトの表示切り替え 同一URL

siriusはPCとiphoneで別なhtmlを設定できたり
それぞれのcssを読み込んだりして最適化してくれるんだけど
どうやって、pcをiphoneを同一URLで表示しているのか調べてみた。

最初に .htaccessでpc iphoneスマホを判別します

.htaccessは以下の通り
———————-
RewriteEngine Off
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry)
RewriteRule ^$ iphone/redirect.php?f=index\.html [L]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry)
RewriteRule ^(.*)\.html iphone/redirect.php?f=$1\.html [L]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry)
RewriteRule ^(.*)\.css iphone/$1.css [L]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry)
RewriteRule ^img/(.*) iphone/img/$1 [L]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry)
RewriteRule ^(.*)/ iphone/redirect.php?f=$1/index\.html [L]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry)
RewriteRule ^(.*) iphone/$1 [L]
———————–

USER AGENTに
iPhone|iPod|Android|BlackBerry

iphone
ipod ipadではない
Android
BlackBerry

の文字がある場合は
スマホと判断するとしています

ここで問題なのは
Androidのタブレットもスマホ表示されてしまうということがあるのですが
現状まだAndroidのタブレットのシェアは低いので無視しときましょ。

判断した場合に
iphoneディレクトリの中にある
redirect.phpを起動して
redirect.phpが、該当するiphoneディレクトリの中のファイルを読み込んで表示する
そういう形になってます

 

スクリーンショット 2014-10-26 17.17.08

これは

siriusで、iphone pcを同一URLで表示するという推奨の設定をした場合に
この.htaccessになります

iphoneとPcを違うURLで表示するという方法もあるのですが
この場合は.htaccessが変わります
これはまた後日


この
redirect.phpはなにをしているかっていうと
iphone用に作られたiphone ディレクトリ内のhtmlを
includeしているだけなんですね

普通に使う場合は問題ないのですが

phpを使ってサイトを作るときに
sample.php
だけだと問題ないのですが
sample.php?q=abc
みたいな引数をつかうサイトの場合は
引数を引き継がれず、

単にsample.phpを表示してしまうのです

これはどうしよう??と考えてしまうわけですが
違うURLでiphone表示して、.htaccessを少し変更するだけで
この引数を引き継がれない問題は解決するのです。