投稿日:2002年07月26日 作成鷹の巣

No.4299 cgi設定:自宅サーバーでのURL(URI)表示方法?



cgi設定:自宅サーバーでのURL(URI)表示方法?

No.4299 投稿時間:2002年07月26日(Fri) 05:59 投稿者名:kanri URL:

場違いな質問かもしれませんが、perlに詳しい方教えてください。
例えばサーバーの名前を「abc」と設定したWin機で、次のような設定のcgiを動作させると、
URL表示がhttp://abc/~となってしまい正確ではありません。
どのように修正すれば宜しいのでしょうか?

$url = "http://$ENV{SERVER_NAME}$ENV{SCRIPT_NAME}";


どう出れば良いのですか

No.4301 投稿時間:2002年07月26日(Fri) 09:04 投稿者名:OAK URL:

> 場違いな質問かもしれませんが、perlに詳しい方教えてください。
> 例えばサーバーの名前を「abc」と設定したWin機で、次のような設定のcgiを動作させると、
> URL表示がhttp://abc/~となってしまい正確ではありません。
> どのように修正すれば宜しいのでしょうか?
>
> $url = "http://$ENV{SERVER_NAME}$ENV{SCRIPT_NAME}";

「正確ではありません」は表現が正しくありません。正確にだしているからそのように出ます
どういうふうに出したいのか書かなければ分かりません。
http://xyz/bcd/ss と出したいなら
$url='http://xyz/bcd/ss'; と書けば良いのでは。

$ENV{SERVER_NAME} はサーバマシン名だから abc です (バーチャルホストならそれぞれのホスト名)
$ENV{SCRIPT_NAME} はスクリプト名(プログラム名)ですから /bcd/index.cgi などに相当します。


具体的にどういうふうに出したいかというと...

No.4304 投稿時間:2002年07月26日(Fri) 11:28 投稿者名:kanri URL:

コメントどうもです。
具体的にどういうふうに出したいかというと、
ローカルPCからつない時は
http://192.168.0.*/xxx/yyy/
外部からつないだ時は
http://****.zive.net/xxx/yyy/
です。


接続元のIPアドレスで分ける

No.4306 投稿時間:2002年07月26日(Fri) 12:30 投稿者名:OAK URL:

> コメントどうもです。
> 具体的にどういうふうに出したいかというと、
> ローカルPCからつない時は
> http://192.168.0.*/xxx/yyy/
> 外部からつないだ時は
> http://****.zive.net/xxx/yyy/
> です。

内部から呼ばれた時と外部から呼ばれた時を区別するのなら 接続元のIPアドレスをチェックします
{'REMOTE_ADDR'} が接続元のIPアドレスですから

if( index( $ENV{'REMOTE_ADDR'} , '192.168.' ) >=0) #LAN
{ $url='http://192.168.0.255/xxx/yyy'; }
else # InterNet
{ $url='http://kanri.zive.net/xxx/yyy/'; }

みたいに(実行してませんから正しいか怪しげです)

WANのテストは kkk.nu/wget/ を使っていただいてもかまいません。


|目次|掲示板|過去ログ目次|▲頁先頭|