ある特定のページと同じ階層内には複数のページがあります。
この特定の1ページだけを、携帯からのアクセスを他ページに移動させたいと考えています。
特定のページを携帯用に作り替え、
javascriptを使う方法も考えましたが↓
if(navigator.appCodeName=="Mozilla"){
location.href="pc.html.";
}
出来れば現在のPC用のURL、リンクを変更したくはありません。
同じ階層には複数のページがあるため、
.htaccess による振り分けも私の知識ではうまくいきません。
現在のページにアクセスした携帯を振り分ける、
何かいい方法がありましたらお願いします。
「.htaccess」は使用できるのですね?
例えば、「http://user.example.com/」がtontonpokopokoさんのHPアドレス、ある特定のPC用ページが「http://user.example.com/pc.html」、携帯に表示させたいページが「http://user.example.com/mobile.html」だとして、次のように記述してみてください。
※以下は、WEBルート直下に「.htaccess」を置く場合です。
RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^pc\.html http://user.example.com/mobile.html [R]
※ある特定のPC用ページが「http://user.example.com/dir1/pc.html」の場合は、RewriteRuleの行は次のようになります。
RewriteRule ^dir1/pc\.html http://user.example.com/mobile.html [R]
※PC用のページのファイルまでのパスは、ルート直下に置いてあるファイルからの相対パスを、携帯に表示させるページはそのページのURLをそのまま書くと分かり易いと思います。
※「.htaccess」をルート直下以外の場所に置く場合は、「RewriteBase」も変更する必要がありますし、「RewriteRule」のファイルまでのパスも「.htaccess」を置いた場所からの相対パスに変更する必要があります。
「.htaccess」は使用できるのですね?
例えば、「http://user.example.com/」がtontonpokopokoさんのHPアドレス、ある特定のPC用ページが「http://user.example.com/pc.html」、携帯に表示させたいページが「http://user.example.com/mobile.html」だとして、次のように記述してみてください。
※以下は、WEBルート直下に「.htaccess」を置く場合です。
RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^pc\.html http://user.example.com/mobile.html [R]
※ある特定のPC用ページが「http://user.example.com/dir1/pc.html」の場合は、RewriteRuleの行は次のようになります。
RewriteRule ^dir1/pc\.html http://user.example.com/mobile.html [R]
※PC用のページのファイルまでのパスは、ルート直下に置いてあるファイルからの相対パスを、携帯に表示させるページはそのページのURLをそのまま書くと分かり易いと思います。
※「.htaccess」をルート直下以外の場所に置く場合は、「RewriteBase」も変更する必要がありますし、「RewriteRule」のファイルまでのパスも「.htaccess」を置いた場所からの相対パスに変更する必要があります。
rouge_2008さん、ありがとうございます。
まだ試してはないのですが、
この方法だと、.htaccess以下の階層(特定のページ以外にも)にきた、すべて携帯ユーザを特定のページに飛ばすことにはならないでしょうか・・?
.htaccessは影響を回避するためにNGなら、PHPはどうなんでしょう?(サーバ次第ですね)
http://opqr.jp/2007/09/phppc.html
携帯は普通、JavaScriptは動きませんから、なんらかの動的な処理はやっぱりPHPが手軽でしょう。
要件が特定ファイルのみということでもあるようなので。
蛇足になりますが、UserAgentは容易に偽装できるので、もう少し精度をあげるならキャリアごとに公開されているアクセス元IPアドレス範囲も(PHPの場合)$_SERVER['REMOTE_ADDR']でチェックするのが1つの方法です。
それでも、IPアドレスさえも偽装できるとも聞いたことがあります(そんな方法は調べてもいませんし、知りませんが)し、UserAgentかつIPアドレスでチェックしないと、検索エンジンのクローラをはじいてしまう副作用が出る場合もありますので、注意してください。
i4ooonさん、回答をありがとうございます。
今回はPHPは使わずに解決をいたしました。
しかし今後にPHPも使ってみたいと思います。参考になりました。
rouge_2008さん、ありがとうございます。
まだ試してはないのですが、
この方法だと、.htaccess以下の階層(特定のページ以外にも)にきた、すべて携帯ユーザを特定のページに飛ばすことにはならないでしょうか・・?