プロが教えるわが家の防犯対策術!

現在下記のように書かれているcgiでトップページの振り分けをしています。今までは各htmに飛ばしていたのですが、今度モバイルのみcgi
へ飛ばしたいのですが、i.htmの部分をmi.cgiと書き換えてもうまく飛びません。どうしたらcgiへ飛ぶようになるのでしょうか?


$vjump='.i.htm'; #SoftBank用
$ijump='./i.htm'; #i-MODE用
$ejump = './i.htm'; #EZWEB用
$pcjump = './index.htm'; #PC,その他

$USR = $ENV{'HTTP_USER_AGENT'};

if ($USR =~ /^DoCoMo/) { $lct = $ijump; }
elsif ($USR =~ /UP\.Browser/) { $lct = $ejump; }
elsif ($USR =~ /^SoftBank/ || $USR =~ /^Vodafone/ || $USR =~ /^J-PHONE/) { $lct = $vjump; }
else { $lct = $pcjump; }

&go;
exit;
sub go {
print "Content-type: text/html\n\n";
open(IN, $lct);
while (<IN>) {
print;
}
close(IN);

}

exit;

A 回答 (2件)

これはそのページに飛ばすのではなく、そのページの内容を表示するcgiですので、ファイル名を書き換えてもダメです。


ジャンプさせるように変更すれば良いのですが、そうすると現在使っているhtmlファイルの内容を少し変える必要があります。

sub go {
print "Content-type: text/html\n\n";
open(IN, $lct);
while (<IN>) {
print;
}
close(IN);

}

これを

sub go {
print "Location:http://{サイトのURL}/$lct";
}

とでもすればいいのですが…
    • good
    • 0

沢山の条件に影響されるのでうまくいくかどうかはわかりませんが、以下の様にすればできるかも。



sub go{
if( $lct =~ m/\.cgi/ ) {
require $lct;
exit;
}
print "Content-type: text/html\n\n";
open(IN, $lct);
print <IN>;
close(IN);
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!