• ベストアンサー

ケータイサイトの3社別自動振り分けをしたい!(再質問です)

CGIやphpによるユーザーエージェントを判別するスクリプトを使用して各キャリア別に自動振り分けをしたいということで以前質問しました。親切な方から下記回答をいただいたんですが、それをどうやってサイトに組み込めばいいのかがプログラムの知識が初心者レベルなので分かりません。CGIの設置の仕方は色々なサイトを見よう見真似でやってみたのですが、実行したら403エラーのような表示が出てメインのURLにアクセスできなくなってしまいました。下記のスクリプトはHTMLにも記述する必要があるんでしょうか?試したのはスクリプトを.cgiというファイルで保存してそれをサーバーにアップしてパーミッションを755に設定しただけです。どなたか、詳しく説明していただける方助けてください。 ------------------------------- #!/usr/bin/perl #ユーザーエージェント取得 $uagent = $ENV{'HTTP_USER_AGENT'}; $ua = 99; $docomohtml = 'ドコモ用ページ'; $auhtml = 'au用ページ'; $vodauhtml = 'ボーダ用ページ'; $otherhtml = 'その他用ページ'; if( index($uagent,"DoCoMo") >= 0){ $ua = 0; } elsif( index($uagent,"UP.Browser") >= 0){ $ua = 1; } elsif( index($uagent,"Vodafone") >= 0){ $ua = 2; } else{ $ua = 3; } if( $ua == 0){ print "Location: $docomohtml\n\n"; } elsif( $ua == 1){ print "Location: $auhtml\n\n"; } elsif( $ua == 2){ print "Location: $vodahtml\n\n"; } else{ print "Location: $otherhtml\n\n"; } exit; -----------------------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • makoto44
  • ベストアンサー率27% (18/66)
回答No.4

私も#2の方と同じように上記のソースを試してみましたが、問題ありませんでした。 やっぱり考えられるのは、403エラーということなので、 $docomohtml = 'ドコモ用ページ'; $auhtml = 'au用ページ'; $vodauhtml = 'ボーダ用ページ'; $otherhtml = 'その他用ページ'; の「●●用ページ」をサーバーに設置する必要があります。 各端末に合ったコンテンツ作りは、色んなサイトで紹介しているので、それを参考にして下さい。

その他の回答 (3)

  • in_dow
  • ベストアンサー率77% (7/9)
回答No.3

一度 アドレスにフルパスで入力(index.cgiと入力)して実際に動いているか確かめてみましたか? 403というのはだいたい、ディレクトリを表示しようとして帰るエラーです。(403:アクセス拒否) もし、特定できない!と言う場合は if( $ua == 0){ の行の前に print "Content-type: text/html;\n\n"; と言う行を挿入して走らせてみて下さい。(どんなヘッダーを返しているのか確認できます) #携帯かどうかの判別はUAではなく、ホスト名で判別した方が確実かもしれません。(専用サイトの場合推奨::ua偽称できるので) #参考までに

参考URL:
http://d.hatena.ne.jp/indication/20050603#1117762536
  • h_mihara
  • ベストアンサー率7% (1/13)
回答No.2

>HTMLのほうには何も記述する必要はないのでしょうか HTMLは関係ありません。 試してみましたがCGIのほうも問題ありません。 まさか、この部分このままにしているとかw ちゃんとアドレス書いていますか? $docomohtml = 'ドコモ用ページ'; $auhtml = 'au用ページ'; $vodauhtml = 'ボーダ用ページ'; $otherhtml = 'その他用ページ';

参考URL:
http://www99.cun.jp/test/test0602.cgi
  • makoto44
  • ベストアンサー率27% (18/66)
回答No.1

・index.cgiというファイル名にしたのでしょうか? ・CGIを設置する場所が決まっていませんか? (サーバが指定したディレクトリ(フォルダ)にアップロードしましたか?) ・Perlのパスは正しいですか? ・文字コードや転送モードは正しいですか? 上記のソースを見ると携帯以外だと $otherhtml = 'その他用ページ'; でその他用のページに飛ばされるみたいですが、その他用のページは、用意していますか?

lunamaria
質問者

補足

さっそくご回答ありがとうございます。 ファイル名はindex.cgiにしてアップロードはプロバイダーが指定しているのはサーバー内で特に限定した場所はないということなのでそのままアップしました。Perlのパスもプロバイダーが指定したものを1行目に書き転送モードはテキストモードでアップ後に拡張子のチェックもしました。その他用のページにはPC用のページを作ってそちらのURLを載せました。でも結果的にPCと携帯のどちらからアクセスしても403エラーということでアクセス権がないと表示されます。パーミッションは指定した数値で設定しましたし.httaccessは設定する必要がないということなので他に原因が思い当たらないのですが…HTMLのほうには何も記述する必要はないのでしょうか?

関連するQ&A

専門家に質問してみよう