NET/www/PukiWiki
の編集
https://over.6pb.info/wiki/?NET/www/PukiWiki
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#contents *HTTPS化 [#s62bfe8d] 転送の設定方法(ウェブ一般の方法)は方々に載っているが,実際にこのサイトで,特にPukiWikiで動かすには修正が必要だった。2018年 3月 3日 #pre{{ RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://over.6pb.info$1 [R=301,NE,L] }} [[NE:https://httpd.apache.org/docs/current/rewrite/flags.html#flag_ne]]が必要。また,URLの後ろを「/$1」とすると「/」が二重に付加された。 *最新のページをデフォルトページに [#e94c5ddc] ページを指定せずPukiWikiにアクセスしたとき、「FrontPage」ではなく、最後に更新されたページが表示されるようにする。(RecentChangesページではない。)PukiWiki初期状態だとFrontPageという名のページ(index.php?FrontPage)が出る。別の選択肢。 -サンプル: https://over.6pb.info/wiki/ #hr -vhost.confまたはhttpd.conf #pre{{ RewriteEngine On RewriteMap wiki_entry "prg:/var/www/html/.../wiki/entry_page.pl" apache:apache }} --下記スクリプトを設置後、reload。restartの必要はない。(2.2.15, 2.4.33) -wiki/.htaccess #pre{{ RewriteEngine On RewriteRule ^$ ${wiki_entry:''} [NE,L] }} --Pattern「^$」は、.../wiki/のように、ディレクトリ名で終わるアクセスとマッチする。wiki/とwikiの両方にマッチする。[[別途書いている>NET/サーバー#rewriteRuleHtaccess]]ように、/wiki/ディレクトリ内に.haccessを置いたなら、Patternに「/wiki」や「wiki」と書かない。書くとマッチしない。頭は/で始まらないし、自分のディレクトリ名は含まれない。 --${prg}: prgという外部プログラムを実行してその戻り値(STDOUT)が${prg}の部分に置換(差替え)される。[[Using RewriteMap - Apache HTTP Server Version 2.4:https://httpd.apache.org/docs/2.4/rewrite/rewritemap.html#prg]] --プログラムには引数を渡す必要がある。空でもよい。ここでは空の''。 --[NE]必須。今回の実際の飛び先(RewriteRuleのSubstitutionの内容)はPukiWikiページなので、NEがないと二重にURLエンコードされてしまう。転送先をベタに書く際、URLエンコードする前の文字列を書く必要があるが、それと同じ。 -wiki/entry_page.pl #pre{{ #!/usr/bin/perl use strict; use warnings; $| = 1; use HTML::TreeBuilder::XPath; my $url = 'https://over.6pb.info/wiki/index.php?RecentChanges'; while (<STDIN>) { my $tree = HTML::TreeBuilder->new_from_url($url); my $href = $tree->findvalue('//*[@id="body"]/ul/li[1]/a/@href'); print $href; print "\n"; } }} --Apacheのお供として常駐する。 --メモリ使用量はWeb::ScraperでもHTML::TreeBuilder::XPathでも大差ないようだ。 ||>|VSZ|>|RSS|h ||RIGHT:|RIGHT:|RIGHT:|RIGHT:|c |Web::Scraper + URI|95,308||22,660|| |Web::Scraper + LWP::Simple|97,656|2.5%|22,944|1.3%| |HTML::TreeBuilder::XPath|94,908|-0.4%|22,180|-2.1%| |HTML::TreeBuilder::XPath + URI|94,912|-0.4%|22,188|-2.1%| *アクセス制限 [#n6597b1b] [[NET/www>NET/www#restriction]] *短縮URL [#nf8a3cf3] PukiWikiのページの内,ページ名が日本語のページ(全角文字をページ名に含むページ)のURLを人に紹介するのは若干はばかられる。長い意味不明のURLを伝えることになるから(FFなどでは一見長くないように見えるが,メールにコピペすれば驚く。)。各種URL短縮サービスを利用するのも一計だが,デメリットもある。他のやり方として,自分のサーバーのリダイレクト機能を利用する方法がある。但し,若干の注意が必要。 例えば,ページ NET/日経新聞電子版 へ, http://over.6pb.info/nikkei-wiki でアクセスできるようにするには,.haccess等に&color(red){UTF-8で}; RewriteRule ^/nikkei-wiki /wiki/index.php?NET/日経新聞電子版 [R] と記述する必要がある。UTF-8で書くのがキモ。URLエンコードした RewriteRule ^/nikkei-wiki /wiki/index.php?NET/%E6%97%A5%E7%B5%8C%E6%96%B0%E8%81%9E%E9%9B%BB%E5%AD%90%E7%89%88 [R] では期待通りに動かない。 *アクセス記録が2つになる [#b921c58b] PukiWikiはページ名に/ (slash)を使うことで階層構造を表現できる。ページ名はそのままURLになっているので、URLにも/を含む。少し困ったことに、ページ名の/を、URLエンコードしたアクセス(/が%2Fに置き換えられている)と、していないアクセスが混在している。両者は最終的に表示されるページは同じであるものの、アクセス統計では(ソフトや設定次第だが)別々にカウントされる。URLが違うから。アクセス解析ソフトは、通常、一定の方針で「異なる」アクセスを同一視するので、PukiWikiの/も同一視すればよいだけだが、私の対応能力を超える。なお、PukiWikiのページ名を表す/を%2Fに置き換えるのは余計なことだ。インターネットの規格ではqueryの/をreserved purpose以外で使うときはURLエンコードする必要はない。
タイムスタンプを変更しない
#contents *HTTPS化 [#s62bfe8d] 転送の設定方法(ウェブ一般の方法)は方々に載っているが,実際にこのサイトで,特にPukiWikiで動かすには修正が必要だった。2018年 3月 3日 #pre{{ RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://over.6pb.info$1 [R=301,NE,L] }} [[NE:https://httpd.apache.org/docs/current/rewrite/flags.html#flag_ne]]が必要。また,URLの後ろを「/$1」とすると「/」が二重に付加された。 *最新のページをデフォルトページに [#e94c5ddc] ページを指定せずPukiWikiにアクセスしたとき、「FrontPage」ではなく、最後に更新されたページが表示されるようにする。(RecentChangesページではない。)PukiWiki初期状態だとFrontPageという名のページ(index.php?FrontPage)が出る。別の選択肢。 -サンプル: https://over.6pb.info/wiki/ #hr -vhost.confまたはhttpd.conf #pre{{ RewriteEngine On RewriteMap wiki_entry "prg:/var/www/html/.../wiki/entry_page.pl" apache:apache }} --下記スクリプトを設置後、reload。restartの必要はない。(2.2.15, 2.4.33) -wiki/.htaccess #pre{{ RewriteEngine On RewriteRule ^$ ${wiki_entry:''} [NE,L] }} --Pattern「^$」は、.../wiki/のように、ディレクトリ名で終わるアクセスとマッチする。wiki/とwikiの両方にマッチする。[[別途書いている>NET/サーバー#rewriteRuleHtaccess]]ように、/wiki/ディレクトリ内に.haccessを置いたなら、Patternに「/wiki」や「wiki」と書かない。書くとマッチしない。頭は/で始まらないし、自分のディレクトリ名は含まれない。 --${prg}: prgという外部プログラムを実行してその戻り値(STDOUT)が${prg}の部分に置換(差替え)される。[[Using RewriteMap - Apache HTTP Server Version 2.4:https://httpd.apache.org/docs/2.4/rewrite/rewritemap.html#prg]] --プログラムには引数を渡す必要がある。空でもよい。ここでは空の''。 --[NE]必須。今回の実際の飛び先(RewriteRuleのSubstitutionの内容)はPukiWikiページなので、NEがないと二重にURLエンコードされてしまう。転送先をベタに書く際、URLエンコードする前の文字列を書く必要があるが、それと同じ。 -wiki/entry_page.pl #pre{{ #!/usr/bin/perl use strict; use warnings; $| = 1; use HTML::TreeBuilder::XPath; my $url = 'https://over.6pb.info/wiki/index.php?RecentChanges'; while (<STDIN>) { my $tree = HTML::TreeBuilder->new_from_url($url); my $href = $tree->findvalue('//*[@id="body"]/ul/li[1]/a/@href'); print $href; print "\n"; } }} --Apacheのお供として常駐する。 --メモリ使用量はWeb::ScraperでもHTML::TreeBuilder::XPathでも大差ないようだ。 ||>|VSZ|>|RSS|h ||RIGHT:|RIGHT:|RIGHT:|RIGHT:|c |Web::Scraper + URI|95,308||22,660|| |Web::Scraper + LWP::Simple|97,656|2.5%|22,944|1.3%| |HTML::TreeBuilder::XPath|94,908|-0.4%|22,180|-2.1%| |HTML::TreeBuilder::XPath + URI|94,912|-0.4%|22,188|-2.1%| *アクセス制限 [#n6597b1b] [[NET/www>NET/www#restriction]] *短縮URL [#nf8a3cf3] PukiWikiのページの内,ページ名が日本語のページ(全角文字をページ名に含むページ)のURLを人に紹介するのは若干はばかられる。長い意味不明のURLを伝えることになるから(FFなどでは一見長くないように見えるが,メールにコピペすれば驚く。)。各種URL短縮サービスを利用するのも一計だが,デメリットもある。他のやり方として,自分のサーバーのリダイレクト機能を利用する方法がある。但し,若干の注意が必要。 例えば,ページ NET/日経新聞電子版 へ, http://over.6pb.info/nikkei-wiki でアクセスできるようにするには,.haccess等に&color(red){UTF-8で}; RewriteRule ^/nikkei-wiki /wiki/index.php?NET/日経新聞電子版 [R] と記述する必要がある。UTF-8で書くのがキモ。URLエンコードした RewriteRule ^/nikkei-wiki /wiki/index.php?NET/%E6%97%A5%E7%B5%8C%E6%96%B0%E8%81%9E%E9%9B%BB%E5%AD%90%E7%89%88 [R] では期待通りに動かない。 *アクセス記録が2つになる [#b921c58b] PukiWikiはページ名に/ (slash)を使うことで階層構造を表現できる。ページ名はそのままURLになっているので、URLにも/を含む。少し困ったことに、ページ名の/を、URLエンコードしたアクセス(/が%2Fに置き換えられている)と、していないアクセスが混在している。両者は最終的に表示されるページは同じであるものの、アクセス統計では(ソフトや設定次第だが)別々にカウントされる。URLが違うから。アクセス解析ソフトは、通常、一定の方針で「異なる」アクセスを同一視するので、PukiWikiの/も同一視すればよいだけだが、私の対応能力を超える。なお、PukiWikiのページ名を表す/を%2Fに置き換えるのは余計なことだ。インターネットの規格ではqueryの/をreserved purpose以外で使うときはURLエンコードする必要はない。
テキスト整形のルールを表示する