使用Dokuwiki搭建了一个wiki,但是wiki的url感觉不大美观。于是就设置了url重写,让它和平时看到的wiki的url一样。
DokuWiki的三种URL
默认情况下,DokuWiki不做任何的URL重写,它的原始URL是这样的:
这样默认的URL不利于有些搜索引擎不收录,而且也不易于记忆。
通过设置DokuWiki的配置设置里面的高级设置的userwrite配置选项它可以支持两种URL重写方法,利用服务器的mod_rewrite或者在DokuWiki内部自己处理URL重写。
下面是userewrite选项值的列表及其对应的URL格式:
1、默认值没有URL重写 http://wiki.qingxianyan.cn/doku.php?id=wiki:syntax
2、htaccess服务器处理 http://wiki.qingxianyan.cn/wiki:syntax
3、DokuWiki处理 http://wiki.qingxianyan.cn/doku.php/wiki:syntax
使用Apache服务器处理
先在/wiki/conf/dokuwiki.php中设置:
$conf[‘userewrite’] = 1;
Apache服务器开启Rewrite功能
apache的URL重写是使用mod_rewrite模块。在apache的配置文件中添加如下这行:
1 |
LoadModule rewrite_module modules/mod_rewrite.so |
然后使用mod_rewrte的指令来配置URL重写规则。这些规则可以放在apache的全局配置文件内,也可以放在DokuWiki的根目录下的.htaccess文件内,事实上DokuWiki已经为了写好了这些规则放在.htaccess.dist中,修改删除部分“#”注释即可 内容如下:
3 |
RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L] |
4 |
RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L] |
5 |
RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] |
6 |
RewriteRule ^$ doku.php [L] |
7 |
RewriteCond %{REQUEST_FILENAME} !-f |
8 |
RewriteCond %{REQUEST_FILENAME} !-d |
9 |
RewriteRule (.*) doku.php?id=$1 [QSA,L] |
在RewriteBase /dokuwiki这一行,你需要根据实际情况做修改成指向你的DokuWiki目录的路径,Dokuwik就在站点根目录或者已经使用子域名解析到相应目录时,需将.htaccess 文件中的 RewriteBase /dokuwiki 行使用首字符“#”将其注释。
使用Nginx服务器处理
01 |
rewrite ^(/)_media/(.*) $1lib/exe/fetch.php?media=$2 last; |
02 |
rewrite ^(/)_detail/(.*) $1lib/exe/detail.php?media=$2 last; |
03 |
rewrite ^(/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 last; |
06 |
if (!-f $request_filename) |
08 |
rewrite ^(/)(.*)?(.*) $1doku.php?id=$2&$3 last; |
09 |
rewrite ^(/)$ $1doku.php last; |
转载请注明:旅途@KryptosX » 配置DokuWiki的URL重写