こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

DreamWeaver(CS5)で携帯用のサイトを作成しています。

DreamWeaver(CS5)で携帯用のサイトを作成しています。
PCサイトをメインに、+携帯用サイトという形で、最終的に有料のサーバースペース(さくらインターネット・ライトか、ロリポップの予定)を借りて、ドメインも取得する予定です。
ただ色々調べて、キャリア毎に表示が異なること、タグの制限等はわかったのですが、いくつかわからないことがあります。

1.とりあえず無料のスペース(FC2)を借りて、携帯端末(docomo)で表示確認をしようと、
 ttp://アカウント名.web.fc2.com/i/
 の中に、index.htmlをおきました。
 ですが、サイトが移動しました(301) → 無効なデータを受信しました(301)
 という形でサイトの表示ができません。
 最後尾に/をつけないと、そのようなエラーが出るようなので付けたのですがダメでした。
 念のため、index.htmlでも指定しましたができませんでした。
 .htaccessをおいて、
 AddType "application/xhtml+xml; charset=Shift_JIS" .html
 の記述もしてみたのですがやはり表示できませんでした。
 ただ、docomoの「iモード HTMLシミュレータ-II」ではきちんと表示されました。
 対策方法がありましたらお願いいたします。
 
2.完成後の話なのですが、サイト構成を
 index.html(PCサイトTOP)
 ├[img]
 ├[css]
 └[i](携帯サイト)
  └index.html

という風にする予定なのですが、
例えば、ttp://www.ドメイン.com/
というドメインをとった場合、PCからは勿論index.html(PCサイト)に飛ぶと思うのですが、
携帯からドメインを利用して、i/index.htmlに直接飛ぶことは可能でしょうか。

以上2点になりますが、ご教授のほどよろしくお願いいたします。

投稿日時 - 2010-07-17 10:39:27

QNo.6044199

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

> 携帯からドメインを利用して、i/index.htmlに直接飛ぶことは可能でしょうか。

この部分のみについて、ですが…。


可能か不可能かで言えば「可能」です。

PHPまたはCGIを使いますので、サーバーがPHPやオリジナルCGIに対応していなければ無理なんですけれどもね。


ユーザーエージェント(端末の個別の情報)を取得し、これを条件にして if { ~ } elseif { ~ }; で分岐させる記述をしたindex.cgiまたはindex.phpをドメイン直下に置いておけば出来ます。

つまりPCの場合も、一度このindex.cgiまたはindex.phpを通過する、という事になります。

PCでも携帯でも同じURLにアクセスすることで勝手にキャリア別のページに飛ばす、という仕組みです。


プログラムの具体例は、私の持っている書籍だと2008年発行の

エムディエヌコーポレーション 発行
黒須 信宏 著
【Webデザイン 明解テクニック 100】
ISBN978-4-8443-5969-2

という本に掲載されていました。

2008年の情報であることを踏まえて、上記書籍以外でなるべく新しいものを探された方がいいと言えますが、それ以前にFC2がオリジナルCGIやPHPに対応していないならば「直接飛ぶ」というアクションは諦めるしかない、という事になります。

さくらやロリポップはこの程度のCGIやPHPには充分対応しているので使えますね。



上記の本に掲載されているプログラムを「iモード」と「PC」でのみ分岐させるCGIの例として短縮してみると下記のような感じです。
iモードじゃなかったらPC、という分岐なので、elseifではなく、elseに変更しています。
下記、\(半角円マーク)は、実際にはバックスラッシュになります(/と逆向きのアレ)。

#!/usr/bic/perl
#index.cgi
#
#iモード用URL
$imode = "http://www.ドメイン.com/i/index.html";
#PC用URL
$pc = "http://www.ドメイン.com/index.html";
#
#ユーザーエージェント取得
$brwsr = $ENV('HTTP_USER_AGENT');
#
#分岐iモード
if ($brwsr =~ /DoCoMo/) {
print "Location: $imode\n\n";
}
#分岐PC
else {
print "Location: $pc\n\n";
}
exit;

投稿日時 - 2010-07-24 01:13:27

あなたにオススメの質問