転送の設定方法(ウェブ一般の方法)は方々に載っているが,実際にこのサイトで,特にPukiWikiで動かすには修正が必要だった。2018年 3月 3日
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://over.6pb.info$1 [R=301,NE,L]
NEが必要。また,URLの後ろを「/$1」とすると「/」が二重に付加された。
ページを指定せずPukiWikiにアクセスしたとき、「FrontPage」ではなく、最後に更新されたページが表示されるようにする。(RecentChangesページではない。)PukiWiki初期状態だとFrontPageという名のページ(index.php?FrontPage)が出る。別の選択肢。
RewriteEngine On RewriteMap wiki_entry "prg:/var/www/html/.../wiki/entry_page.pl" apache:apache
RewriteEngine On RewriteRule ^$ ${wiki_entry:''} [NE,L]
#!/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"; }
VSZ | RSS | |||
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% |
PukiWikiのページの内,ページ名が日本語のページ(全角文字をページ名に含むページ)のURLを人に紹介するのは若干はばかられる。長い意味不明のURLを伝えることになるから(FFなどでは一見長くないように見えるが,メールにコピペすれば驚く。)。各種URL短縮サービスを利用するのも一計だが,デメリットもある。他のやり方として,自分のサーバーのリダイレクト機能を利用する方法がある。但し,若干の注意が必要。
例えば,ページ
NET/日経新聞電子版
へ,
http://over.6pb.info/nikkei-wiki
でアクセスできるようにするには,.haccess等に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]
では期待通りに動かない。
PukiWikiはページ名に/ (slash)を使うことで階層構造を表現できる。ページ名はそのままURLになっているので、URLにも/を含む。少し困ったことに、ページ名の/を、URLエンコードしたアクセス(/が%2Fに置き換えられている)と、していないアクセスが混在している。両者は最終的に表示されるページは同じであるものの、アクセス統計では(ソフトや設定次第だが)別々にカウントされる。URLが違うから。アクセス解析ソフトは、通常、一定の方針で「異なる」アクセスを同一視するので、PukiWikiの/も同一視すればよいだけだが、私の対応能力を超える。なお、PukiWikiのページ名を表す/を%2Fに置き換えるのは余計なことだ。インターネットの規格ではqueryの/をreserved purpose以外で使うときはURLエンコードする必要はない。