- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-08-23T06:34:46+09:00;2007-02-26T11:23:03+09:00","","")
#author("2017-09-04T22:27:58+09:00","","")
*URL中のIPv6アドレスの扱い [#ve760ddb]
-ページ: BugTrack
-ページ: [[BugTrack]]
-投稿者: [[CCS]]
-優先順位: 低
-状態: 保留
-カテゴリー: 本体バグ
-状態: 完了
-カテゴリー: その他
-投稿日: 2004-05-29 (土) 02:10:52
-バージョン: 1.4.3
**メッセージ [#n14089c2]
IPv6を使っている場合に、URLを生成するfunc.phpの583行目の部分がIPv6のことを考慮していないために、有効なURLが生成されません。
URLでIPv6を使う場合は、"http://[::1]/"というようにIPv6アドレスを'['と']'くくる必要があります。
修正はそれほど難しくないと思います。
私は、次のような修正で使っています。
--- func.php.org Mon Mar 22 00:03:18 2004
+++ func.php Sat May 29 02:03:47 2004
@@ -580,7 +580,14 @@
// scheme
$script = ($_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://');
// host
- $script .= $_SERVER['SERVER_NAME'];
+ //$script .= $_SERVER['SERVER_NAME'];
+ if (preg_match("/:/", $_SERVER['SERVER_NAME']) == 0
+ || $_SERVER['SERVER_NAME']{0} == '[') {
+ $script .= $_SERVER['SERVER_NAME'];
+ }
+ else {
+ $script .= '[' . $_SERVER['SERVER_NAME'] . ']';
+ }
// port
$script .= ($_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']);
// path
** 調査・対応 [#lb32ff7d]
Webサーバーにより挙動が異なります。IPv6アドレス、例えば http://[::1]:8080/wiki/ にWebブラウザからアクセスした場合、以下のようになります。
- Apache 2.2 では $_SERVER['SERVER_NAME'] が '::1'
- Apache 2.4 では $_SERVER['SERVER_NAME'] が '[::1]'
Apache 2.4 の場合、現行(PukiWiki 1.5.1)のロジックで正常に各リンクが生成され、アクセスできます。
Apache 2.2 の場合は、リンクが不正になります。Apache 2.2でIPv6のIPアドレスアクセスが必要な場合は、提案のようなパッチを当ててください。
他のよく利用されるWebサーバーで同様の不具合が発生する場合は、追加報告をお願いします。
----
-関連:[[BugTrack/341]] -- [[Ratbeta]] &new{2004-10-31 (日) 21:32:14};
-参考:[[RFC3986 Uniform Resource Identifier (URI): Generic Syntax>RFC:3986]] -- [[Mizar]] &new{2005-03-03 (木) 22:25:24};
-[[IPv6]] -- &new{2005-04-03 (日) 23:31:04};
- 調査しました。http:// [::1]/wiki/ のようなアドレスでアクセスした場合、Apache 2.2 では $_SERVER[''SERVER_NAME] が '::1' になり、Apache 2.4 では $_SERVER['SERVER_NAME'] が '[::1]' になりました。IPv6のIPアドレス指定のアクセスはレアケースと考えられることと、Apache 2.2のサポート期限が2017年12月までであることを考慮し、追加の対応は行わないことにします。(Apache 2.4であれば現状の実装で正常にIPv6アクセスができている)。この調査をもってResolveとします -- [[umorigu]] &new{2017-09-04 (月) 22:17:57};
//#comment
#comment