dokuwiki 中文路径重写

dokuwiki 作为自己个人使用的“知识(八卦)管理工具”已经有大概一年左右的时间了,之前使用的是 2008-05-05 的版本,主要保存一些非技术类的八卦,在一个“随时停车”的大局域网里面“留此存照”。dokuwiki 支持简单的中文全文查询,似乎中文分词上有些问题,但是基本上足够使用。

 

我没怎么用过模板、插件等高级功能,只是简单的保存点文章而已。如果能够在团队中保存维护技术类文档或者代码片断也许更有意义。

 

话说回来,前天的时候一时兴起,将 dokuwiki 升级到了 2009-02-06 的一个版本(还有 2009-12-02 的 RC1可供下载),结果浏览文章的时候没什么问题,但是创建中文页面的时候,就会出现莫名其妙的乱码。之前虽然也有“乱码”,但那个基本上是因为中文编码的问题,虽然乱,但有迹可寻;这次则乱倒了影响文件存储位置的程度。与此同时,本来比较友好的 URL Rewrite 也失效了,变成的默认的 http://example.com/dokuwiki/doku.php?id=wiki:syntax,使用“:”分隔,一来不美观,二来我认为与第一个问题有关联。

 

于是放狗来找,隐约记得之前曾经在中文站点看到过关于 dokuwiki 中文路径的重写,结果迷失在茫茫网海之中。

 

最后还是在官方站点 http://www.dokuwiki.org/ 上找到了最终的答案:URL Rewrite

 

我使用的是 DokuWikiStick——一个使用 MicroApache 作为WebServer,无需其他配置 DokuWiki。在 Windows操作系统上,DokuWikiStick 可以从任意移动设备上运行 DokuWiki,不需要安装配置任何其他软件。DokuWikiStick现在可以找到的版本大概是 DokuWiki on a Stick 2008-05-05


只需要看那个 Option 1:Web Server —— Apache 的部分即可。

 

按照官网上的说明,只需要将 dokuwiki\conf\dokuwiki.php 中的以下几行稍加修改即可,其中最有用的就是“userewrite”,其他几个可以根据个人喜好自行设置。

 

 

$conf['userewrite']  = 1;                //this makes nice URLs: 0: off 1: .htaccess 2: internal
$conf['useslash'] = 1; //use slash instead of colon? only when rewrite is on
$conf['usedraft'] = 1; //automatically save a draft while editing (0|1)
$conf['sepchar'] = '.'; //word separator character in page names; may be letter, a digit, '_', '-', or '.'.

 

 

然后更为关键的是那个 .htaccess 文件。

 

在 dokuwiki 的目录下,原本就提供了 .htaccess.dist 文件,其实就是示例文件,只需要将其拷贝出一个副本,然后将文件名改为“.htaccess”,将其中的被注释掉的 URL Rewrite Rule 恢复使用即可。

 

RewriteEngine on

 

RewriteBase /

 

RewriteCond %{HTTPS} !=on
RewriteRule ^lib/exe/xmlrpc.php$        https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

RewriteRule ^_media/(.*)                    lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)                     lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)       doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                                   doku.php  [L]
RewriteCond %{REQUEST_FILENAME}      !-f
RewriteCond %{REQUEST_FILENAME}      !-d
RewriteRule (.*)                                doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$                   doku.php

 

其中标红的那一句就是困扰我多时地方,原来的 .htaccess.dist 里面写的是 “ReWriteBase /Dokuwiki” 其实注释里面写的明白 change "/dokuwiki" to the path to your dokuwiki directory relative to your document root.

 

已开始没有仔细看,最后是从日志里面找到了问题,然后才一点点的修改过来。

 

我的 DokuWiki 主目录在 DokuWikiStick 里面,直接叫作“DokuWiki”,如果主目录名称不同的话,可以在 DokuWikiStick\conf\httpd.conf 中修改。

 

新版本似乎在登陆和权限设置的地方也和过去有些不同,以后有机会在研究。

 

晚上花了大概有三、四个小时的样子,解决了这样一个早已解决过的问题,充分说明了写博客的重要意义——把自己做的事情记录下来,即可以惠及他人,也可以方便自己。

 

posted on 2009-12-10 00:35  zhaorui  阅读(2504)  评论(0编辑  收藏  举报

导航