2004-11-12
@ [fswiki] .html形式のURL(3)
というわけで3.5.7 dev1をベースにやってみました。まずlib/Wiki/HTMLParser.pmを修正します。
--- HTMLParser.pm.orig 2004-10-23 10:54:09.000000000 +0900
+++ HTMLParser.pm 2004-11-12 01:49:55.000000000 +0900
@@ -421,11 +421,10 @@
$name = $page;
}
if($self->{wiki}->page_exists($page)){
- return "<a href=\"".$self->{wiki}->config('script_name')."?page=".&Util::url_encode($page)."\" class=\"wikipage\">".
- &Util::escapeHTML($name)."</a>";
+ return "<a href=\"".&Util::url_encode($page).".html\" class=\"wikipage\">".&Util::escapeHTML($name)."</a>";
} else {
return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
- "<a href=\"".$self->{wiki}->config('script_name')."?page=".&Util::url_encode($page)."\">?</a>";
+ "<a href=\"".&Util::url_encode($page).".html\">?</a>"
}
}
これで、Wikiページへのリンクは.html形式になりますが、これだけだと右上のメニューの"トップ"や"ヘルプ"は直らないので、不満な人はplugin/core/Install.pmも修正しましょう。
--- Install.pm.orig 2004-10-23 10:54:09.000000000 +0900
+++ Install.pm 2004-11-12 02:08:45.000000000 +0900
@@ -10,7 +10,7 @@
my $wiki = shift;
my $login = $wiki->get_login_info();
- $wiki->add_menu("トップ",$wiki->config('script_name')."?page=".&Util::url_encode($wiki->config("frontpage")),999);
+ $wiki->add_menu("トップ",&Util::url_encode($wiki->config("frontpage")).".html",999);
if($wiki->config('accept_edit')!=0 || defined($login)){
$wiki->add_menu("新規",$wiki->config('script_name')."?action=NEW",998);
@@ -19,7 +19,7 @@
$wiki->add_menu("編集" ,"",997);
$wiki->add_menu("差分" ,"",996);
$wiki->add_menu("一覧" ,$wiki->config('script_name')."?action=LIST",995);
- $wiki->add_menu("ヘルプ",$wiki->config('script_name')."?page=Help",100);
+ $wiki->add_menu("ヘルプ","Help.html",100);
$wiki->add_handler("","plugin::core::ShowPage");
$wiki->add_handler("NEW","plugin::core::NewPage");
あとはApacheのmod_rewriteを使って、httpd.confなりに下記のようなURL書き換えの設定を追加します。FSWikiのURLが http://localhost/cgi-bin/wiki/wiki.cgi で、実際のCGIスクリプトが/usr/lib/cgi-bin/wiki/wiki.cgi だとすると...
RewriteEngine on RewriteRule ^/cgi-bin/wiki/(.+)\.html$ /usr/lib/cgi-bin/wiki/wiki.cgi?page=$1
となります。
とここまでやって気付いたこと。 wiki.cgi?page=ページ名 でアンカを作ってる箇所(プラグイン含む)って結構たくさんあるんです(^^; *1 全部は面倒見切れないのでここまでにしますが、tDiaryみたく、アンカのURLを生成するメソッドをWikiクラスに用意した方がいいかもしれませんね(ボソ)。みなさんわざわざ↓みたいなことしているので。
$wiki->config('script_name')."?page=".&Util::url_encode($page)
*1 "?page="で検索すると15ヶ所ほど。
@ そんなわけで
上記の.html形式のURLはWikiをアクセス解析の対象にしているような人にとっては有効なのではないかと思います。Wikiの各ページが静的なHTMLのように見えるので、どのページが人気あるかとかわかるので。あと、静的なHTMLページの方がGoogleのPageRankが高いとかいう噂も。。。
@ [fswiki] .html形式のURL(4)
覚え書きで.html形式のURLを試してるんです。で、ふとログを見ると Help/FSWiki などページ名にスラッシュを含んだものが 404 Not found になってました*1。
RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 2
のようにして mod_rewrite のログを見ても、どうもRewriteしている気配がない。
"mod_rewrite %2F"でぐぐってみると、%2Fの罠というのがヒット。曰く
というか、Apache 一般の動作として、'%2F' がURIに含まれていても '%2F' を '/' へは decode せず、なおかつ、たとえ'%2F'という文字列を含むファイルあるいはディレクトリがあったとしても 404 Not Found を返す。
だそうな。なるほど〜、今までは QUERY_STRING にページ名つけてたから関係なかったのですね。
というわけで、2時間程はまりましたが httpd.conf に下記を追加して対処。ふぃ〜。
AllowEncodedSlashes On
*1 URL書き換えを行わなければ当然問題なし
@ [fswiki] .html形式のURL(5)
あともう1つ。.html形式にしてtodayslinkプラグインを使うと、wiki.cgiへのアクセスではないとみなされるので
http://kazz.homeunix.org/cgi-bin/wiki/hoge.html
なんていうのも出力されてしまいます。ちょっとわずらわしいので、WikiページからのRefererは出力しないようにplugin/info/TodaysLink.pmをちょ〜手抜きで修正しました。
--- TodaysLink.pm.orig 2004-11-12 19:12:35.000000000 +0900
+++ TodaysLink.pm 2004-11-12 02:54:34.000000000 +0900
@@ -90,7 +90,8 @@
/^http:\/\/10\./ ||
/^http:\/\/192\.168\./ ||
/^http:\/\/172\.((1[6-9])|(2\d)|(3[01]))\./ ||
- /^http:\/\/127\.0\.0\./ );
+ /^http:\/\/127\.0\.0\./ ||
+ /^http:\/\/kazz\.homeunix\.org\/cgi-bin\/wiki\// );
my $ref=$_;
my $refcount=$count->{$ref};
2005-11-12
@ [emacs] cperl-modeの設定
とりあえずこんだけ。cperl-electric-parensとかは逆にうっとおしいのではずしてます。
(autoload 'cperl-mode
"cperl-mode"
"alternate mode for editing Perl programs" t)
(setq cperl-indent-level 4
cperl-continued-statement-offset 4
cperl-close-paren-offset -4
cperl-comment-column 40
cperl-highlight-variables-indiscriminately t
cperl-indent-parens-as-block t
cperl-label-offset -4
cperl-tab-always-indent nil
cperl-font-lock t)
(add-hook 'cperl-mode-hook
'(lambda ()
(progn
(setq indent-tabs-mode nil)
(setq tab-width nil)
)))
(setq auto-mode-alist
(append (list (cons "\\.\\(pl\\|pm\\)$" 'cperl-mode))
auto-mode-alist))
# mazurkja [description fZOurBDyB3pC http://tinyurl.co.uk/foks]