天天看點

配置DokuWiki的URL重寫

使用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&amp;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&amp;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&amp;$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>