BugTrack/2247
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* 外部リンクをリダイレクトページ経由にすることで、Referer...
- ページ: [[BugTrack]]
- 投稿者: [[pai]]
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体新機能
- 投稿日: 2007-06-16 (土) 02:13:51
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.2
----
#contents
** メッセージ [#pd89e753]
Wiki上の外部リンクをクリックすると、リンク先のページにはR...
** パッチ例 (2007年6月実装) [#o0502ada]
pukiwiki.ini.php
// NOTE: Keep (page-name + attach-file-name) <= PKWK...
define('PKWK_QUERY_STRING_MAX', 640); // Bytes, 0 = OFF
+ function convertglobalurl($href) {
+ if ((preg_match("%^https?://".SERVER_NAME."%",...
+ return $href;
+ return "../../redirect.php?".urlencode($href);
+ }
+
/////////////////////////////////////////////////
// Experimental features
lib/init.php(下記の部分はincludeの後に移動する)
! define('S_COPYRIGHT',
! '<strong>PukiWiki ' . S_VERSION . '</strong>' .
! ' Copyright © 2001-2006' .
! ' <a href="'.convertglobalurl("http://pukiwiki...
! ' License is <a href="'.convertglobalurl("http...
! ' Based on "PukiWiki" 1.3 by <a href="'.conver...
! );
lib/make_link.php
***************
*** 385,391 ****
} else {
$rel = ' rel="nofollow"';
}
! return '<a href="' . $this->name . '"'...
}
}
--- 385,391 ----
} else {
$rel = ' rel="nofollow"';
}
! return '<a href="' . convertglobalurl(...
}
}
***************
*** 423,429 ****
function toString()
{
! return '<a href="' . $this->name . '" ...
}
}
--- 423,429 ----
function toString()
{
! return '<a href="' . convertglobalurl(...
}
}
***************
*** 533,539 ****
function toString()
{
! return '<a href="' . $this->url . $thi...
$this->name . '" rel="nofollow...
}
}
--- 533,539 ----
function toString()
{
! return '<a href="' . convertglobalurl(...
$this->name . '" rel="nofollow...
}
}
***************
*** 711,717 ****
$s_page = htmlspecialchars(strip_bracket($page...
$s_alias = ($alias == '') ? $s_page : $alias;
! if ($page == '') return '<a href="' . $anchor ...
$r_page = rawurlencode($page);
$r_refer = ($refer == '') ? '' : '&refer='...
--- 711,717 ----
$s_page = htmlspecialchars(strip_bracket($page...
$s_alias = ($alias == '') ? $s_page : $alias;
! if ($page == '') return '<a href="' . convertg...
$r_page = rawurlencode($page);
$r_refer = ($refer == '') ? '' : '&refer='...
plugin/showrss.inc.php
***************
*** 85,91 ****
$link = $item['LINK'];
$title = $item['TITLE'];
$passage = get_passage...
! $link = '<a href="' . ...
$passage . '" ...
$this->items[$date][] ...
}
--- 85,91 ----
$link = $item['LINK'];
$title = $item['TITLE'];
$passage = get_passage...
! $link = '<a href="' . ...
$passage . '" ...
$this->items[$date][] ...
}
--- interwiki.inc.php.070911 2007-09-11 22:52:09.0781250...
+++ interwiki.inc.php 2007-09-11 22:53:10.687500000 +0900
@@ -18,7 +18,7 @@
if ($url === FALSE) return plugin_interwiki_invalid();
pkwk_headers_sent();
- header('Location: ' . $url);
+ header('Location: ' . convertglobalurl($url));
exit;
}
--- lookup.inc.php.070911 2007-09-11 22:52:25.593750000 ...
+++ lookup.inc.php 2007-09-11 22:53:00.390625000 +0900
@@ -59,7 +59,7 @@
}
pkwk_headers_sent();
- header('Location: ' . $url); // Publish as GET method
+ header('Location: ' . convertglobalurl($url)); // Publ...
exit;
}
?>
** redirect.php例 [#w26f6806]
<?php
$target = htmlspecialchars(urldecode(@$_SERVER["QUERY_ST...
$meta = "";
if (ereg('^https?://[-a-zA-Z0-9]+\.somedomain\.com/', @$...
$meta = '<META http-equiv="refresh" content="5;url='.$t...
?>
<HTML><HEAD><TITLE>redirect.php</TITLE><?=$meta ?></HEAD...
<H1>redirect to <A href="<?=$target ?>"><?=$target ?></A...
<HR>
</BODY></HTML>
** 問題点 [#uecd35c3]
- 外部URLを参照する画像は、サーバがproxyになって転送する...
- plugin/back.inc.php は利用できなさそう
- plugin/amazon.inc.php は利用できなさそう
- 要修正: SERVER_NAME中の.が正規表現エスケープされていない
- 要修正: pukiwiki.ini.phpをincludeした直後に、if(!functi...
-- [070726:pai]真偽が逆だったので修正。リストをforeachで...
- 要修正: ポート番号がついている場合にリダイレクトされな...
** コメント [#q3c77983]
- はじめて書くので、何か問題があればコメントください。 --...
- 関連 [[teanan:自作プラグイン/jumpto.inc.php]] -- &new{...
- ありがとうございます。diffは -u (unified) で出せば小さ...
- 外部Link確認Script http://smith.xrea.jp/?Management%2FW...
- [[official:質問箱4/77]] -- &new{2007-06-17 (日) 02:55:...
- [[official:自作プラグイン/exlink.inc.php]] -- &new{200...
- redirect.phpと、問題点の追加をおこないました。 -- [[pai...
- いろいろコメントありがとうございます。redirect.php につ...
- リプライが遅くなり申し訳ありません。ライセンスはPukiWik...
-- コメントありがとうございます。以前から作っているredire...
- Location:ヘッダによるリダイレクトを見落としていたので、...
** 2018年3月版実装 [#i26e8278]
JavaScriptを利用して、本体実装への影響を少なくしつつリフ...
- 外部リンク用のクッションページを作成 (external_linkプラ...
- JavaScriptで実装 (ページ内のすべてのリンクに対処可能。...
-- 期待動作のためにはモダンブラウザを利用する必要がある(I...
-- 主な要件: JSON.parse(), document.querySelectorAll(), C...
- 設定 $external_link_cushion_page 0(Disabled) or 1(Enabl...
-- デフォルトは0
- 設定 $external_link_cushion in pukiwiki.ini.php
-- 'internal_domains': 「内部サイト」とみなすサイト(FQDN)...
-- 'silent_external_domains': 「外部サイトであるが、外部...
- 外部リンクアイコン image/external_link.png を追加
- 外部リンクアイコンをCSSで表示 (CSS3 の ::after疑似要素)
- 設定をJSONでHTMLに埋め込み、JavaScriptで読み出し、リン...
- サーバー要件: PukiWiki文字コード設定:UTF-8, PHP5.4以降
- クライアント要件: JavaScript有効, JSON.parse(), documen...
- imgタグのサポートはない。(imgタグによる画像読み込みの場...
*** 設定例 [#p981e8cb]
// Show External Link Cushion Page
// 0: Disabled
// 1: Enabled
$external_link_cushion_page = 1;
$external_link_cushion = array(
// Wait N seconds before jumping to an external s...
'wait_seconds' => 5,
// Internal site domain list
'internal_domains' => array(
'localhost',
'*.example.com',
),
// Don't show extenal link icons on these domains
'silent_external_domains' => array(
'pukiwiki.osdn.jp',
'pukiwiki.example.com',
),
);
** コメント (2018年3月実装以降) [#ff5d84fd]
- JavaScriptで実装しました -- [[umorigu]] &new{2018-03-22...
- file:プロトコルの時にクッションページを挟まないようにし...
#comment
** 関連 [#z5f9876a]
- [[teanan:自作プラグイン/jumpto.inc.php]]
- [[BugTrack/2462]] リファラを制御したい (Referrer Policy)
終了行:
* 外部リンクをリダイレクトページ経由にすることで、Referer...
- ページ: [[BugTrack]]
- 投稿者: [[pai]]
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体新機能
- 投稿日: 2007-06-16 (土) 02:13:51
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.2
----
#contents
** メッセージ [#pd89e753]
Wiki上の外部リンクをクリックすると、リンク先のページにはR...
** パッチ例 (2007年6月実装) [#o0502ada]
pukiwiki.ini.php
// NOTE: Keep (page-name + attach-file-name) <= PKWK...
define('PKWK_QUERY_STRING_MAX', 640); // Bytes, 0 = OFF
+ function convertglobalurl($href) {
+ if ((preg_match("%^https?://".SERVER_NAME."%",...
+ return $href;
+ return "../../redirect.php?".urlencode($href);
+ }
+
/////////////////////////////////////////////////
// Experimental features
lib/init.php(下記の部分はincludeの後に移動する)
! define('S_COPYRIGHT',
! '<strong>PukiWiki ' . S_VERSION . '</strong>' .
! ' Copyright © 2001-2006' .
! ' <a href="'.convertglobalurl("http://pukiwiki...
! ' License is <a href="'.convertglobalurl("http...
! ' Based on "PukiWiki" 1.3 by <a href="'.conver...
! );
lib/make_link.php
***************
*** 385,391 ****
} else {
$rel = ' rel="nofollow"';
}
! return '<a href="' . $this->name . '"'...
}
}
--- 385,391 ----
} else {
$rel = ' rel="nofollow"';
}
! return '<a href="' . convertglobalurl(...
}
}
***************
*** 423,429 ****
function toString()
{
! return '<a href="' . $this->name . '" ...
}
}
--- 423,429 ----
function toString()
{
! return '<a href="' . convertglobalurl(...
}
}
***************
*** 533,539 ****
function toString()
{
! return '<a href="' . $this->url . $thi...
$this->name . '" rel="nofollow...
}
}
--- 533,539 ----
function toString()
{
! return '<a href="' . convertglobalurl(...
$this->name . '" rel="nofollow...
}
}
***************
*** 711,717 ****
$s_page = htmlspecialchars(strip_bracket($page...
$s_alias = ($alias == '') ? $s_page : $alias;
! if ($page == '') return '<a href="' . $anchor ...
$r_page = rawurlencode($page);
$r_refer = ($refer == '') ? '' : '&refer='...
--- 711,717 ----
$s_page = htmlspecialchars(strip_bracket($page...
$s_alias = ($alias == '') ? $s_page : $alias;
! if ($page == '') return '<a href="' . convertg...
$r_page = rawurlencode($page);
$r_refer = ($refer == '') ? '' : '&refer='...
plugin/showrss.inc.php
***************
*** 85,91 ****
$link = $item['LINK'];
$title = $item['TITLE'];
$passage = get_passage...
! $link = '<a href="' . ...
$passage . '" ...
$this->items[$date][] ...
}
--- 85,91 ----
$link = $item['LINK'];
$title = $item['TITLE'];
$passage = get_passage...
! $link = '<a href="' . ...
$passage . '" ...
$this->items[$date][] ...
}
--- interwiki.inc.php.070911 2007-09-11 22:52:09.0781250...
+++ interwiki.inc.php 2007-09-11 22:53:10.687500000 +0900
@@ -18,7 +18,7 @@
if ($url === FALSE) return plugin_interwiki_invalid();
pkwk_headers_sent();
- header('Location: ' . $url);
+ header('Location: ' . convertglobalurl($url));
exit;
}
--- lookup.inc.php.070911 2007-09-11 22:52:25.593750000 ...
+++ lookup.inc.php 2007-09-11 22:53:00.390625000 +0900
@@ -59,7 +59,7 @@
}
pkwk_headers_sent();
- header('Location: ' . $url); // Publish as GET method
+ header('Location: ' . convertglobalurl($url)); // Publ...
exit;
}
?>
** redirect.php例 [#w26f6806]
<?php
$target = htmlspecialchars(urldecode(@$_SERVER["QUERY_ST...
$meta = "";
if (ereg('^https?://[-a-zA-Z0-9]+\.somedomain\.com/', @$...
$meta = '<META http-equiv="refresh" content="5;url='.$t...
?>
<HTML><HEAD><TITLE>redirect.php</TITLE><?=$meta ?></HEAD...
<H1>redirect to <A href="<?=$target ?>"><?=$target ?></A...
<HR>
</BODY></HTML>
** 問題点 [#uecd35c3]
- 外部URLを参照する画像は、サーバがproxyになって転送する...
- plugin/back.inc.php は利用できなさそう
- plugin/amazon.inc.php は利用できなさそう
- 要修正: SERVER_NAME中の.が正規表現エスケープされていない
- 要修正: pukiwiki.ini.phpをincludeした直後に、if(!functi...
-- [070726:pai]真偽が逆だったので修正。リストをforeachで...
- 要修正: ポート番号がついている場合にリダイレクトされな...
** コメント [#q3c77983]
- はじめて書くので、何か問題があればコメントください。 --...
- 関連 [[teanan:自作プラグイン/jumpto.inc.php]] -- &new{...
- ありがとうございます。diffは -u (unified) で出せば小さ...
- 外部Link確認Script http://smith.xrea.jp/?Management%2FW...
- [[official:質問箱4/77]] -- &new{2007-06-17 (日) 02:55:...
- [[official:自作プラグイン/exlink.inc.php]] -- &new{200...
- redirect.phpと、問題点の追加をおこないました。 -- [[pai...
- いろいろコメントありがとうございます。redirect.php につ...
- リプライが遅くなり申し訳ありません。ライセンスはPukiWik...
-- コメントありがとうございます。以前から作っているredire...
- Location:ヘッダによるリダイレクトを見落としていたので、...
** 2018年3月版実装 [#i26e8278]
JavaScriptを利用して、本体実装への影響を少なくしつつリフ...
- 外部リンク用のクッションページを作成 (external_linkプラ...
- JavaScriptで実装 (ページ内のすべてのリンクに対処可能。...
-- 期待動作のためにはモダンブラウザを利用する必要がある(I...
-- 主な要件: JSON.parse(), document.querySelectorAll(), C...
- 設定 $external_link_cushion_page 0(Disabled) or 1(Enabl...
-- デフォルトは0
- 設定 $external_link_cushion in pukiwiki.ini.php
-- 'internal_domains': 「内部サイト」とみなすサイト(FQDN)...
-- 'silent_external_domains': 「外部サイトであるが、外部...
- 外部リンクアイコン image/external_link.png を追加
- 外部リンクアイコンをCSSで表示 (CSS3 の ::after疑似要素)
- 設定をJSONでHTMLに埋め込み、JavaScriptで読み出し、リン...
- サーバー要件: PukiWiki文字コード設定:UTF-8, PHP5.4以降
- クライアント要件: JavaScript有効, JSON.parse(), documen...
- imgタグのサポートはない。(imgタグによる画像読み込みの場...
*** 設定例 [#p981e8cb]
// Show External Link Cushion Page
// 0: Disabled
// 1: Enabled
$external_link_cushion_page = 1;
$external_link_cushion = array(
// Wait N seconds before jumping to an external s...
'wait_seconds' => 5,
// Internal site domain list
'internal_domains' => array(
'localhost',
'*.example.com',
),
// Don't show extenal link icons on these domains
'silent_external_domains' => array(
'pukiwiki.osdn.jp',
'pukiwiki.example.com',
),
);
** コメント (2018年3月実装以降) [#ff5d84fd]
- JavaScriptで実装しました -- [[umorigu]] &new{2018-03-22...
- file:プロトコルの時にクッションページを挟まないようにし...
#comment
** 関連 [#z5f9876a]
- [[teanan:自作プラグイン/jumpto.inc.php]]
- [[BugTrack/2462]] リファラを制御したい (Referrer Policy)
ページ名: