[UTF-8] UTF-8に移行したサイトに、移行前のページ名(URL)に対するアクセスがあった場合のケア

  • 元タイトル: EUC-JP -> UTF-8移行後のページ名について
  • ページ: BugTrack2
  • 投稿者: okkez
  • 優先順位: 低
  • 状態: 保留
  • カテゴリー: プラグイン
  • 投稿日: 2006-09-22 (金) 01:14:26
  • バージョン: 1.4.7

メッセージ

EUC-JP -> UTF-8に移行した場合、旧ページ名*1へのアクセスが悲しいことになります。

とりあえず悲しさを軽減できるパッチを作ったので参考までにどうぞ。

Index: read.inc.php
===================================================================
--- read.inc.php	(revision 225)
+++ read.inc.php	(working copy)
@@ -25,7 +25,15 @@
 
 	} else {
 		// 無効なページ名
+		if ('EUC-JP' === mb_detect_encoding($page)) {
+			$page = mb_convert_encoding($page, 'UTF-8', 'EUC-JP');
+			$body = make_pagelink($page);
+			return array(
+				'msg'=>'maybe this page?',
+				'body'=>$body
+			);
+		}
 		return array(
 			'msg'=>$_title_invalidwn,
 			'body'=>str_replace('$1', htmlspecialchars($page),

  • コメントありがとうございます。重要度と影響範囲を判断できるような状況添えていただければ助かります。例:どのユーザーでも必ず起こるのか、何か適切な手順を踏まなかった時に発生するのか、本来は絶対に起こらないのか。 -- henoheno 2006-09-24 (日) 14:23:12
    • okkez:memo/改造/UTF-8化 EUC-JP 時代のページ名にアクセスされてもとりあえずUTF-8に変換したリンクを表示するパッチ の件ですね。少しタイトルを修正します。 -- henoheno 2006-09-24 (日) 14:26:04
    • この件は、元々EUC-JPで公開していたサイトや、相手方がInterWikiの設定を間違えている時にしか発生しないアクセスをケアするためのものです。そのため、上記パッチはEUC-JPのサイト向けのものではないようです。その旨のコメントか、if文がいりそうです。 -- henoheno 2006-09-24 (日) 14:57:45
    • 汎用化する場合: 上記パッチは UTF-8 化したサイトに対する EUC-JP のケアですが、EUC-JPのサイトにUTF-8化したページ名によるアクセス(InterWikiの設定を間違えている)があった時でも、同じアイデアでフォローできる可能性があると思われます。また、上の例では定数 SOURCE_ENCODING の値が UTF-8 でない時は無効にするのが良さそうですね。 -- henoheno 2006-09-24 (日) 15:01:09
      • 本家に取り込む場合はそのようにするべきだと思います。-- okkez 2006-09-24 (日) 19:38:17
  • official/devからのアクセスがきっかけになった予感が。 -- henoheno 2006-09-24 (日) 15:04:19
    • 実はofficial/devはInterWikiを以前、設定しなおしたので問題なかったのです。アクセスログを確認したところ結構色々な人のページでInterWikiを使わずにEUC-JP時代のURIを直接記述しているケースがありました。全てのサイトを修正して回ったりは流石にできないのでこんなパッチを作りました。 -- okkez 2006-09-24 (日) 19:38:17
  • 前後の状況が解ったところで、対応の適切さの件。okkezさんの所に "本当は、変換後のページが存在したらリダイレクトさせたい" とある通りで、 HTTP Locationヘッダで飛ばす方法もあるかもしれませんね。また、(1)指定されたページはないが (2)推測に基づいた別のページならある 時に発動させるべきものなので、そのページが本当に存在するのか確認を入れるのが良さそうです。 -- henoheno 2006-09-24 (日) 15:09:54
    • リダイレクトさせる場合についてはその通りですね。 -- okkez 2006-09-24 (日) 19:38:17
    • 各種コメントありがとうございます。あれから少し考えたのですが、ノータイムでLocaitonヘッダを出すのは、文字コード識別関数を信用しすぎで危ないので、やはり事前に移動先のページの存在確認を行った方が良さそうです。 -- henoheno 2006-09-24 (日) 19:47:48
    • ページが存在しない場合でも、validなページ名の場合は移動させてもいいんじゃないでしょうか。存在しないページ名の場合は単に新規作成になるだけですし。ただし文字コード変換後invalidなページ名になる場合には移動させるとマズイと思います。 -- okkez 2006-09-24 (日) 20:26:29
  • 開発日記/2015-01-03: UTF-8版の利用を推奨、BugTrack2/186: UTF-8版関係のまとめ -- 2016-01-18 (月) 21:58:25


*1 日本語を含む

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-01-18 (月) 21:58:25
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.254 sec.

OSDN