- ベストアンサー
ホームページに来た人を携帯用とPC用振り分けるやり方
PC用にホームページを作ったのですが、携帯でも見れるようにしたくなりました。 それで振り分けるやり方をいろいろ探しているのですが、いろいろあってどれがよいのかわかりません。 一般的によく使われている方法はどういったやり方でしょうか? 私が特に重視したいのは、 トップの読み込みが重くならないことと、 トップのアドレス変更はなしです。 http://tech.bayashi.net/pdmemo/pckt.html このサイトの方法がいまのところ一番よさそうですが、まだ試してません。 重くならないか心配です。重くなかったら問題ありません。 他に、オススメのやり方が書かれているサイトなど、ありましたら教えてほしいです。お願いします。 CGI,PHPやSSIは使えるサーバーです
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> mod_rewriteっていうのはどういうものなんでしょう。 振り分け処理を、CGIスクリプトなどを使わず、サーバー(Apache)自信にやらせてしまう、というように考えるといいと思います。 mod_rewriteは大変強力な機能で、「URL を操作するためのスイス製のアーミーナイフ」とマニュアルに書いてあるほどです。サーバーが自分で処理するので、他に何も用意する必要はなく、そしてもちろん効率がよく速いです。 たとえばhtaccessに以下のように書くだけです。 ※かなりいい加減に書いたものです…。 ※携帯用のページが「http://~/mobile/」と仮定。 RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* [NC,OR] ~~~ RewriteRule !^/mobile/.*$ /mobile/ [L] このhtaccessを置くと、端末の名前(USER AGENT)に「DoCoMo」など携帯を示すものが含まれていたら、「http://~/mobile/」に飛ばします。また、たとえば用意したCGIスクリプトなどではなく、つまりトップページにアクセスせず、いきなり ~/dialy.html なんかに直接アクセスされてしまっても対応できます。 (USER AGENTではなく、ホストがdocomo.ne.jp、などでチェックしたほうが確実かもしれません。) 多機能であるゆえ確かにマニュアルなどは長くて難しいですね。 とりあえず今検索してみて見つかった実例の載ったページは、 http://zenryaku.com/archives/000032.html http://ryus.s21.xrea.com/ryus.xrea.jp/stationery/var http://cyberwonk.org/ken/blog/archives/200404/000584.html http://tedious.blogdns.net/log/eid731.html http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html しかしANo.4の方がおっしゃるようにサーバーが対応している必要があるので、まずはその点を確認してください。 mod_rewriteが使えない場合、index.cgiでリダイレクトさせるのが最善だと思います。 質問文で紹介されている方法は、CGIスクリプトがアクセスしてきた端末を判別して、携帯なら携帯用データを、PCならPC用データを書き出す、という方法です。 で、それをSSIでindex.htmlに埋め込んでいます。おそらく見かけ上index.htmlであるように見せるためと思いますが、下にも書きましたが、わざわざSSIにする意味はないと思います。その理由はANo.4の方も書かれていますが、index.htmlではなくても別にURLには影響しません。というかむしろ、それをするためにhtaccessを使えば良いだけの話ですから。 まとめると、とりあえず今出ている方法は次の4つです。 1.mod_rewriteを使う 2.スクリプトが判別して各データを出力する 3.スクリプトが判別して各データを出力する、それをSSIにてindex.htmlに見せかける 4.スクリプトが判別して各ページにジャンプさせる 1が使えればそれが最善なのは言うまでもありません。 3は実質2ですから、3は無意味だと思います。 では、1が使えない場合、2か4どちらが良いか?、ということになりますが、少しでも軽くしたい、効率のよさ、手軽である、更新などのメンテ性、判別処理を毎回動作させなくて良い、などを考えれば4だと思います。 また用意するスクリプトもはるかに簡単なものですみますし。 繰り返しになってしまいますが、いずれの場合も告知するURLには影響しません。
その他の回答 (4)
- Katsu1030
- ベストアンサー率59% (19/32)
#2です。 現在のリンクは変える必要はないでしょう。 というのは、既にPCからのアクセスで有ることが確実だからです。 あと、mod_rewriteはサーバ側でインストールされるべきモジュールなので、入っていれば使えますが入ってなければ使用出来ません。(サーバ管理者に導入を依頼しなくてはいけません。) 方法論ですが、 ・振り分け用index.cgiを準備する。 ・.htaccessファイルで、ファイル名省略時のデフォルトファイル名をindex.cgiに変更する。 となります。 処理の流れは、 1)index.htmlを付けないアクセス →振り分けCGI(index.cgi)で処理 →携帯ならば携帯用ページへリダイレクト(転送) →PCからなら現在のPCページへリダイレクト 2)index.htmlを直接指定したアクセス →振り分けせずそのまま表示(現在のまま) と言った感じだと不用意に振り分け処理が走ることはありません。 念のため、携帯用ページは別階層にあった方が無難でしょう。
お礼
mod_rewriteがサーバーにインストールされてなかった場合、この方法でやってみようと思います。 不用意に振り分け処理が走ることがないというのが、いいと思いました。 いろいろと教えていただいて助かりました。ありがとうございます。
- taseki
- ベストアンサー率66% (155/233)
紹介されている方法は、特に重くなるほどではないと思います。 ただ、この方法、あまりスマートではないように思います。 なぜなら、「pckt.cgi」というのを「index.cgi」というファイル名にしても同じことのように思えます。無駄にSSIを使っているだけのような…。 mod_rewriteが使えれば、プログラムを何も使わずにhtaccessだけで携帯を振り分けられるので、最もスマートかと。 そうでなければ、メンテなど更新しやすさや軽さを追及するなら、素直にリダイレクトを使うとか。 いずれの場合もリダイレクトを使うのは賛否両論ありますが、リダイレクトを使うと、携帯の人は携帯用のページを、PCの人はPC用のページをブックマークしてくれるので、いちいち毎回振り分ける必要がなくなり、結果(サーバーにとっても見る人にとっても)軽くなる、という利点もありますね。 もちろん紹介するURLは同じですから、その点も気にする必要はありません。 あとは考え方次第だと思いますが。
補足
ホームページの他の所に、CGIを設置したら重くなったので、CGIをつかえば重くなると、つい思ってしまいます。あと、index.cgiを使って重くなったという記事を見たことがあって、心配になってたんです。 少しでも軽い方法があったらそっちがいいです。 mod_rewriteっていうのはどういうものなんでしょう。最もスマートと言われたので気になりました。 それで検索してみたんですが、なんだか難しいサイトばかりにたどりついて、具体例が見つけられず、よくわかりませんでした。 申し訳ないですが、mod_rewriteを使った、携帯とPCの振り分け方の具体例がのっているサイトがあったら教えていただきたいです。 リダイレクトも検討してみます。
- Katsu1030
- ベストアンサー率59% (19/32)
こんにちわ。 「USER_AGENT 振り分け」で検索すれば色々でてくると思います。 例) Google⇒ http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2005-15,GGLD:ja&q=USER%5FAGENT+%E6%8C%AF%E3%82%8A%E5%88%86%E3%81%91 URLを変更したくないとの事ですが、現在のURLは「.html」までつけていますか? そうではなく、「/」で終わっているページであればURLを変更せずに振り分けCGIを仕込むことは可能です。 ご記載のページのSSI利用の場合でも、数万PV/日とかではない限りはですが特に気にするほどの負荷は掛からないと思います。
補足
こんにちは。 USER_AGENT 振り分けで検索してみました。 いろいろ出てきました。ありがとうございます。 /で終わってるページです。でも、他のページからindex.htmlにリンク設定してあるので、なるべく変えたくないなと思ってたんですが、index.cgiにしたほうが負担が少なくなるのであれば、それも考えています。 気にするほどではないのならいいのですが、index.cgiにすると重くなったという記事をみかけたので、気になっていました。
- hiroaki_0
- ベストアンサー率53% (131/245)
お使いのサーバー絵動かせるなら、特に問題ないんじゃないでしょうか? これで重いようなら、サーバーに問題ありかも? 人によってはperlよりPHPの方が軽いという人もいますが・・・
お礼
考えていただいてありがとうございました
お礼
mod_rewrite 意味がわかりました。 これを設定できたら一番いいですね! >振り分け処理を、CGIスクリプトなどを使わず、サーバー(Apache)自信にやらせてしまう、というように考えるといいと思います。 という考え方を書いていただいたのがわかりやすかったです。 SSIにてindex.htmlに見せかけるっていうのはスマートじゃないなっていうのもわかりました。 丁寧に教えていただいてありがとうございました。大変勉強になりました。 まずはmod_rewriteでやってみようと思います。