ページを固定URLに
カテゴリ[fswiki]
mod_rewriteを使って、どうにかできないかともがいてたら、一応、出来たようなので。farmにも対応。(これが難しかった。。。)
まず、wiki/dir_name/ によるアクセスのために、index.cgi に改名しておく。
さらに、setup.dat 内で script_name = ./ としておく。
.htaccess
<FilesMatch "\.(pm|dat|wiki|log)$"> deny from all </FilesMatch> RewriteEngine on RewriteBase /wiki RewriteRule ^(.+)/([^/]+)\.html$ index.cgi/$1?page=$2 [NS,L] RewriteRule ^(.+)/$ index.cgi/$1 [NS,L] RewriteRule ^([^/]+)\.html$ index.cgi?page=$1 [NS,L]
index.cgi (元、wiki.cgi)
***************
*** 63,69 ****
$wiki->redirectURL($cgi->url().$path_info);
}
$path_info =~ m</([^/]+)$>;
! $wiki->config('script_name', $1);
$wiki->config('data_dir' , $wiki->config('data_dir' ).$path_info);
$wiki->config('config_dir' , $wiki->config('config_dir').$path_info);
$wiki->config('backup_dir' , $wiki->config('backup_dir').$path_info);
--- 63,69 ----
$wiki->redirectURL($cgi->url().$path_info);
}
$path_info =~ m</([^/]+)$>;
!# $wiki->config('script_name', $1); #comment out
$wiki->config('data_dir' , $wiki->config('data_dir' ).$path_info);
$wiki->config('config_dir' , $wiki->config('config_dir').$path_info);
$wiki->config('backup_dir' , $wiki->config('backup_dir').$path_info);
lib/Wiki/HTMLParser.pm
%2F問題を回避するのに参考にさせていただきました。[http://sheepman.parfait.ne.jp/wiki/RewriteRule]
***************
*** 421,427 ****
$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>";
} else {
return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
--- 421,429 ----
$name = $page;
}
if($self->{wiki}->page_exists($page)){
! my $escape_slash = &Util::url_encode($page);
! $escape_slash =~ s|%2F|%252F|;
! return "<a href='".$escape_slash.".html' class='wikipage'>".
&Util::escapeHTML($name)."</a>";
} else {
return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
lib/Wiki.pm
***************
*** 1283,1289 ****
# Locationタグでリダイレクト
if($self->config('redirect')==1){
my ($hoge,$param) = split(/\?/,$url);
! $url = $self->get_CGI->url().$self->get_CGI()->path_info();
if($param ne ''){
$url = "$url?$param";
}
--- 1286,1292 ----
# Locationタグでリダイレクト
if($self->config('redirect')==1){
my ($hoge,$param) = split(/\?/,$url);
! $url = $self->get_CGI->url();
if($param ne ''){
$url = "$url?$param";
}
さらに
ページ名とページタイトルを別々に設定するという仕様にしてみたり。
このページがそうなってます。
ページの先頭に ///タイトル を書くと、自動的に別名リンクになるという仕組。
こっちはパッチを上げときました。
lib_Wiki_patch.diff(398)
TrackBack
TrackBack URL for this entry:http://wiki.trick-with.net/PermanetURL.html/PermanetURL
- FSWikiなのに - ゆ〜ろ (04/08/27 12:51)
- FSWikiなのに恐ろしく軽いページだなぁ。。。と思っていたら見てたんですが、特別な改造をいれてるんでしょうか? - ゆ〜ろ (04/08/27 12:55)
- ただ単純にIEで表示されているURLが .html になっているだけで、サーバーが超高速なんでしょうか? - ゆ〜ろ (04/08/27 12:56)