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ディレクトリの中のファイルを読み込んで表示する
そういう形になってます
これは
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を少し変更するだけで
この引数を引き継がれない問題は解決するのです。