原因は/lib/func.phpの get_script_uri()で以下のように コーディングされているのが原因だと思います。
$script = (SERVER_PORT == 443 ? 'https://' : 'http://'); $script = (SERVER_PORT == 443 ? '/' : '/'); $script .= SERVER_NAME; // host $script .= (SERVER_PORT == 80 ? '' : ':' . SERVER_PORT);
$scriptへURIを直接書けばよいという意見も考えられますが、LAN内から見られなくなるため、この方法は使いたくありません。(DNSサーバをLAN内に立てれと言わないでください)
最初これら4行をコメントアウトして、ページ内のリンクを相対URIにすればよいと考えましが、BugTrack/341 に相対URIだと絶対指定のURLを吐くプラグインで問題が出ると書いてあるためこの方法も使わない方がよいと思ってます。 ちなみに、BugTrack/341には回避策として
$script='pukiwiki.php'
とすればよいとも書いてありますが(もちろん絶対指定のURLが必要なプラグインは捨てることになる)、is_url()でチェックされエラーとなってしまい、設定ファイルで一時的に回避することも現在はできません。
$scriptは相対URIにして、絶対URIが必要なプラグインが絶対URIを使えるように、絶対URIのための変数をpukiwiki.ini.phpに追加してはどうでしょうか?もちろんこの方法でも絶対URIが必要なプラグインへの障害は発生しますが、WAN or LANのどちらかは最低限プラグインを使用することができます。
if ($_SERVER['REMOTE_ADDR'] がローカル) { $script = 'https://local/pukiwiki/'; } else { $script = 'https://example.com/pukiwiki/'; }
$script = (SERVER_PORT == 443 ? 'https://' : 'http://'); $script .= SERVER_NAME; // host $script .= (SERVER_PORT == 80 ? '' : ':' . SERVER_PORT);
↓以下のように変更
if (isset($_SERVER['HTTPS'])) { $script = 'https://' . SERVER_NAME; $script .= (SERVER_PORT == 443 ? '' : ':' . SERVER_PORT); } else { $script = 'http://' . SERVER_NAME; $script .= (SERVER_PORT == 80 ? '' : ':' . SERVER_PORT); }