URL には、アルファベットと一部記号しか使用してはならない決まりがあるため、日本語を使う場合にはパーセントエンコーディングする必要があるが、これをアクセスログで見ても、何のページか判別しがたいのでデコードする方法を模索してみた。
端末で nkf する
- パッケージマネージャから nkf をインストール
- アクセスログをダウンロードし、端末で以下を実行
nkf --url-input --overwrite '/tmp/access.log'
- テキストエディタで開く
Geany の選択範囲を nkf する
- パッケージマネージャから Geany と nkf をインストール
- Geany を起動して、メニューの「編集 → 書式(F) → 選択範囲を送る(S)」から「カスタムコマンドを設定」をクリック
- 「カスタムコマンドを設定」ウィンドウで「追加(A)」ボタンを押して、コマンド欄に「
nkf --url-input
」と入力し、「OK(O)」ボタンを押す
- Geany でアクセスログを開き、エンコードされた部分を範囲指定してから、「編集 → 書式(F) → 選択範囲を送る(S)」の「nkf --url-input」をクリック
rawurldecode
<!doctype html>
<html lang=ja>
<head>
<meta charset=utf-8>
<title>logoutput</title>
</head>
<body>
<pre><?=rawurldecode(file_get_contents('/tmp/access.log'))?></pre>
</body>
</html>
注意点
- 端末の nkf に --overwrite を含めなければ、端末上にログが表示される
- Geany の nkf では、1000 行以上の選択範囲を送るとフリーズするかも
- デコードしても文字化けているものは、bingbot などが誤エンコードしている可能性が高いので気にしない