使用dokuwiki搭建了一个wiki,但是wiki的url感觉不大美观。于是就设置了url重写,让它和平时看到的wiki的url一样。
默认情况下,dokuwiki不做任何的url重写,它的原始url是这样的:
<code>1</code>
这样默认的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
先在/wiki/conf/dokuwiki.php中设置:
$conf[‘userewrite’] = 1;
apache服务器开启rewrite功能
apache的url重写是使用mod_rewrite模块。在apache的配置文件中添加如下这行:
<code>loadmodule rewrite_module modules/mod_rewrite.so</code>
然后使用mod_rewrte的指令来配置url重写规则。这些规则可以放在apache的全局配置文件内,也可以放在dokuwiki的根目录下的.htaccess文件内,事实上dokuwiki已经为了写好了这些规则放在.htaccess.dist中,修改删除部分“#”注释即可 内容如下:
<code>rewriteengine on</code>
<code>2</code>
<code>rewritebase /dokuwiki</code>
<code>3</code>
<code>rewriterule ^_media/(.*) lib/exe/fetch.php?media=$1 [qsa,l]</code>
<code>4</code>
<code>rewriterule ^_detail/(.*) lib/exe/detail.php?media=$1 [qsa,l]</code>
<code>5</code>
<code>rewriterule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [qsa,l]</code>
<code>6</code>
<code>rewriterule ^$ doku.php [l]</code>
<code>7</code>
<code>rewritecond %{request_filename} !-f</code>
<code>8</code>
<code>rewritecond %{request_filename} !-d</code>
<code>9</code>
<code>rewriterule (.*) doku.php?id=$1 [qsa,l]</code>
在rewritebase /dokuwiki这一行,你需要根据实际情况做修改成指向你的dokuwiki目录的路径,dokuwik就在站点根目录或者已经使用子域名解析到相应目录时,需将.htaccess 文件中的 rewritebase /dokuwiki 行使用首字符“#”将其注释。
<code>#nginx的配置文件 /usr/local/nginx/conf/nginx.conf</code>
<code>01</code>
<code>rewrite ^(/)_media/(.*) $1lib/exe/fetch.php?media=$2 last;</code>
<code>02</code>
<code> </code><code>rewrite ^(/)_detail/(.*) $1lib/exe/detail.php?media=$2 last;</code>
<code>03</code>
<code> </code><code>rewrite ^(/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 last;</code>
<code>04</code>
<code> </code><code>location /</code>
<code>05</code>
<code> </code><code>{</code>
<code>06</code>
<code> </code><code>if (!-f $request_filename)</code>
<code>07</code>
<code> </code><code>{</code>
<code>08</code>
<code> </code><code>rewrite ^(/)(.*)?(.*) $1doku.php?id=$2&$3 last;</code>
<code>09</code>
<code> </code><code>rewrite ^(/)$ $1doku.php last;</code>
<code>10</code>
<code> </code><code>}</code>
<code>11</code>
<code> </code><code>}</code>