ポート80以外でhttpを上げている場合、たとえば http://www.example.com:8080/pukiwiki.php
になるのが本来だと思いますが、RSS上のURLは http://www.example.com/pukiwiki.php
になっています。
define('HTTP_HOST',$HTTP_SERVER_VARS['HTTP_HOST']);とでもしておいて、SERVER_NAMEを全てHTTP_HOSTに置換するとうまくいくと思います。 -- ぱんだ 2003-08-20 (水) 11:17:47
$self = preg_match('#^https?://#',$script) ? $script.'?' : ($_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://'). $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?';というのを考えていますが、たぶん決定打ではありません。 -- ぱんだ 2003-08-20 (水) 11:17:47
($_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://'). $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];でうまくいかないことはあるのかな… -- ぱんだ 2003-08-20 (水) 11:17:47
// scheme $script = ($_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://'); // host $script .= $_SERVER['SERVER_NAME']; // port $script .= ($_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']); // path $path = $_SERVER['SCRIPT_NAME']; if ($path{0} != '/') { if (!array_key_exists('REQUEST_URI',$_SERVER) or $_SERVER['REQUEST_URI']{0} != '/') { die_message("please set '\$script' in ".INI_FILE); } $parse_url = parse_url($script.$_SERVER['REQUEST_URI']); if (!isset($parse_url['path']) or $parse_url['path']{0} != '/') { die_message("please set '\$script' in ".INI_FILE); } $path = $parse_url['path']; } $script .= $path;