http://www.dyndns.org/ で登録したアドレス(例えば puki.dyndns.org)で、LAN内部
のpukiwikiにアクセスすると $script にローカルのサーバ名(例えば intra.hoge.jp)
が出てきてしまって困る。
という経験をしました。
つまり、
http://puki.dyndns.org/pukiwiki/pukiwiki.php
と表示されて欲しい時に
http://intra.hoge.jp/pukiwiki/pukiwiki.php
となってしまい、外部からのアクセスでは名前解決ができない状況です。
そこで、func.php の get_script_uri() を
--- func.php.orig Wed Jun 9 11:31:03 2004 +++ func.php Wed Jun 9 15:37:58 2004 @@ -579,8 +579,18 @@ { // scheme $script = ($_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://'); + // host - $script .= $_SERVER['SERVER_NAME']; + if ($_SERVER['HTTP_HOST']) + { + $script .= ereg_replace(":[0-9]+$", "", $_SERVER['HTTP_HOST']); + } + else + { + $script .= $_SERVER['SERVER_NAME']; + } + // $script .= $_SERVER['SERVER_NAME']; + // port $script .= ($_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']); // path
とすることで、DDNSを使用してのアクセスに対して、$scriptによるURIの表示が正しくなるようにしてみました。
HTTP_HOSTを使うのでHTTP 1.1対応が前提になってしまいますが、最近の環境であれば、ほぼ問題無いようにも思います。
もっとつきつめればボロが出てくるとは思いますが、とりあえず我が家の環境
では現状動作しています。
DDNSで動かしている人もいらっしゃると思うのですが、このような修正はアリでしょうか?