2009年3月31日 星期二

0133

http://pesty.yichi.org/blog/2005/12/18/mediawiki_and_pretty_url/
-------------------------------------------------------------------------

如何讓 MediaWiki 可以使用漂亮的網址
Posted on December 18, 2005 in KnowHow by pest

MediaWiki 是目前很流行的一個 Wiki Engine,例如最有名的 Wikipedia 就是以 MediaWiki 作為網路大百科的程式。許多人安裝完 MediaWiki 之後,希望能夠像像 Wikipedia 一樣使用漂亮的網址(Pretty URL),卻會發現不是很好設定,本篇就是我今天試出來的一些經驗,給大家參考。

什麼是漂亮的網址呢?就像是 http://en.wikipedia.org/wiki/Republic_Day 相對於 http://en.wikipedia.org/w/index.php?title=Republic_Day;前者由於沒有使用問號,而且是採用階層式的方式表示其內容,一般來說我們稱這種網址比較漂亮或是簡潔。使用這種網址的好處另有專文討論,這裡先來討論在 MediaWiki 要怎麼做。

假如你已經設定好你的 MediaWiki,那麼你的 LocalSettings.php 會是你的主要設定檔;在這個檔案中,有幾個變數是和 Pretty URL 相關的,請找出以下設定並把設定改為如下,;

$wgScriptPath = “/mediawiki”;
$wgScript = “$wgScriptPath/”;
## If using PHP as a CGI module, use the ugly URLs
$wgArticlePath = “$wgScript$1″;
# $wgArticlePath = “$wgScript?title=$1″;

其中,$wgScriptPath 代表你的 mediawiki 的網址,所以如果你想改成 http://ooxx.com/wiki/,那就在那一行修改;請注意 ‘/’ 擺放的位置,若您多放或少放都可能會造成設定錯誤。

接下來,設定你的 Apache Rewrite;關於安裝 Apache Rewrite Engine,也不在本文討論的範圍,請參考相關文章。

在你的 httpd.conf 或是 .htaccess 中加入以下 RewriteRules:

RewriteEngine On
RewriteBase /mediawiki

RewriteCond %{REQUEST_URI} !^/mediawiki/$

RewriteCond %{REQUEST_URI} !^/mediawiki/(stylesheets|images|skins)/
RewriteCond %{REQUEST_URI} !^/mediawiki/(redirect|texvc|index).php
RewriteCond %{REQUEST_URI} !^/mediawiki/error/(40(1|3|4)|500).html
RewriteCond %{REQUEST_URI} !^/mediawiki/favicon.ico
RewriteCond %{REQUEST_URI} !^/mediawiki/robots.txt

RewriteCond %{QUERY_STRING} ^$ [OR] %{REQUEST_URI} ^/mediawiki/Special:Search
RewriteRule ^(.*)$ /mediawiki/index.php$1 [L]

同樣的, “mediawiki” 可以改成你在 LocalSettings.php 中的設定,不過請注意不要更動先後順序。

這裡的 Rewrite Rules 大致是這樣運作的:

1) 第一個 RewriteCond 處理 /mediawiki/?title=ooxx 這狀況,在這種狀況下不需要 Rewrite;
2) 第二個 RewriteCond 跳過圖檔和 CSS 等靜態資料;
3) 第三個 RewriteCond 跳過 index.php, redirect.php 和 texvc.php,對這幾個檔案的 request 不需要 Rewrite;
4) 第四和第五個 RewriteCond 分別略過 favicon.ico 和 robot.txt。
5) 保留搜尋的字串,其於的 Query String 清空;
6) 把其他的 Query 傳給 index.php

如此就完成了。

測試時,下列四者應該都可以正常運作才行。
1) 是否可以正常在不同頁面連結
2) 是否可以編號內容(請注意存檔結果是否正確)
3) 是否可以正常 Login/Logout
4) 是否可以搜尋。

如果發現設定上有問題,不妨先檢查一下 Apache 的 Rule 設定;假如有使用 Alias 的話,請確定
網址後沒有加上 ‘/’, 而目錄後有加上 ‘/’,如下:

Alias /mediawiki /home/www/mediawiki/

23 Responses to “如何讓 MediaWiki 可以使用漂亮的網址”

1.
on 30 Nov 1999 at 12:00 am1QienKuen

中提到了好多种方法,我先试了多种不使用mod_rewrite方法的一种,获得成功,效果是“www.edu2do.com/eduwiki/wiki /首页”的样子。但我不喜欢多出一个/wiki来,所以打算尝试新的方法。然后找到了这篇文章,根据这里的提示,我基本完成了URL的美化。但问题是:在注册和登陆时,原URL未被正确重置。从而导致我眼看着“用户登陆”,点击并填入信息后,就是不能注册和登陆。于是我开始一行行
2.
on 30 Nov 1999 at 12:00 am2CnLog 稀客

中提到了好多种方法,我先试了多种不使用mod_rewrite方法的一种,获得成功,效果是“www.edu2do.com/eduwiki/wiki /首页”的样子。但我不喜欢多出一个/wiki来,所以打算尝试新的方法。然后找到了这篇文章,根据这里的提示,我基本完成了URL的美化。但问题是:在注册和登陆时,原URL未被正确重置。从而导致我眼看着“用户登陆”,点击并填入信息后,就是不能注册和登陆。于是我开始一行行
3.
on 19 Dec 2005 at 12:12 am3tsaiid

在我這裡這行

RewriteRule ^(.*)$ /mediawiki/index.php$1 [L]

要改成

RewriteRule ^(.*)$ /mediawiki/index.php/$1 [L]

才行耶…
4.
on 19 Dec 2005 at 1:10 am4pest

和 Apache Alias 的目錄有關,你可以試看看現在這在,連到 http://ooxx.com/mediawiki (不加 /) 會不會有問題。
5.
on 02 Jan 2006 at 1:59 am5imacee

我按照你上面的說明做, 遇到兩個問題, 不知有沒有辦法解決呢?

1.想做成把鏈接做成http://wiki.xxxx.com/sample , 可以的嗎

2.用的是虛擬主機, 代理商那邊說沒法設定Apache Rewrite, 那還有別的辦法嗎?

謝謝 !!
6.
on 02 Jan 2006 at 2:19 pm6pest

Hi imacee,

1. 要放在 / 比較麻煩一點, 先前幫 wiki.yichi.org 弄得很頭大, 還沒成功。

2. 可以利用 plog(又稱 lifetype) 的 custom error page 的方式做,不過我不是很清楚是不是有人已經做了。
7.
on 05 Jan 2006 at 10:29 pm7Everyday Work

原來用 PHP 要變出漂亮的網址還得動到 mod_rewrite,好辛苦,而且 CGI 模式也不適用。 相比之下,Django 採用 regular expression (regex; re) 來訂製 URL,真是個聰明的作法。 在 Django 之下,可以寫 ( r’^site_media/(?P
8.
on 23 Nov 2006 at 4:19 pm8kankan

呜呼
虚拟主机
无法修改apache rewrite modle啊
9.
on 13 Dec 2006 at 10:25 am9Anonymous

[...]
10.
on 21 Dec 2006 at 2:44 am102005-12中旬-Thinking less...-新浪部落

[...] 如何讓 MediaWiki 可以使用漂亮的網址,趕快找時間整理 vfp wiki 吧…C/C++ [...]
11.
on 04 Jan 2007 at 3:44 pm11computer:mediawiki [Ivy Wiki]

[...] 使用漂亮的網址 [...]
12.
on 29 Jan 2007 at 3:03 am12HEMiDEMi - 共享書籤- 如何讓 MediaWiki 可以使用漂亮的網址

[...] 書籤討論 406 天前 3人 [...]
13.
on 04 Feb 2007 at 12:34 am13Blogmarks.net : Public marks from user realmip

[...] Today [...]
14.
on 11 Feb 2007 at 3:18 am14讓 MediaWiki 使用短網址(short url)

上面所敘述到的一些問題可參考以下這篇資料解決:
讓 MediaWiki 使用短網址(short url): http://rental.zhupiter.com/postshow_179_1_1.html
15.
on 24 Apr 2007 at 1:37 pm15改用/wiki/式网址 - Kingtip wiki

[...] 更多本问题相关讨论请到讨论页 [编辑] 参见 Template:4 元维基的对应英文网页及其讨论页 Template:4 关于Rewrite rules的讨论(英文),很有价值 Template:3 GMANE讨论区(英文),可更换其他关键字查找 Template:3 如何让 MediaWiki 可以使用漂亮的网址 [...]
16.
on 04 May 2007 at 1:21 pm16XOOPS

[...]
17.
on 11 Jul 2007 at 10:32 am17长白衫 • 查看主题 - wiki 相关SEO

[...] 长白衫 于 2007年 7月 11日 06:59 http://rental.zhupiter.com/postshow_179_1_1.htmlhttp://pesty.yichi.org/blog/2005/12/18/ … retty_url/http://www.mediawiki.org/wiki/Manual:Short_url [...]
18.
on 28 Aug 2007 at 4:55 pm18从网址中去除index.php(MediaWiki) - 一本正经(upnb)--笔记本电脑知识库(笔记本wiki)--您身边的电脑词典

[...] 更多本问题相关讨论请到讨论页 [编辑] 参见 ★★★★☆ 元维基的对应英文网页及其讨论页 ★★★★☆ 关于Rewrite rules的讨论(英文),很有价值 ★★★☆☆ GMANE讨论区(英文),可更换其他关键字查找 ★★★☆☆ 如何让 MediaWiki 可以使用漂亮的网址 [...]
19.
on 13 Sep 2007 at 6:51 pm19louis

我上傳mediawiki 1.68版的
www/mediawiki/
輸入網址後無法直接跳至mediawiki的首頁
必須要在點一下EasyPHP1-8上的mediawiki
才會進入首頁
http://www.trails.com.tw/

更改網址的動作我也是過好多次
很多方法都看不懂或沒效果
20.
on 20 Oct 2007 at 11:16 am20QienKuen’s Weblog·守護與顛覆 » Blog Archive » 为Mediawiki做Pretty URL

[...] 然后找到了这篇文
21.
on 21 Oct 2007 at 8:48 pm21为Mediawiki做Pretty URL - (哪吒)

[...] 然后找到了这篇文章,根据这里的提示,我基本完成了URL的美化。但问题是:在注册和登陆时,原URL未被正确重置。从而导致我眼看着“用户登陆”,点击并填入信息后,就是不能注册和登陆。于是我开始一行行地分析RewriteRules。 [...]
22.
on 21 Mar 2008 at 2:39 am22QienKuen

中提到了好多种方法,我先试了多种不使用mod_rewrite方法的一种,获得成功,效果是“www.edu2do.com/eduwiki/wiki /首页”的样子。但我不喜欢多出一个/wiki来,所以打算尝试新的方法。然后找到了这篇文章,根据这里的提示,我基本完成了URL的美化。但问题是:在注册和登陆时,原URL未被正确重置。从而导致我眼看着“用户登陆”,点击并填入信息后,就是不能注册和登陆。于是我开始一行行
23.
on 21 May 2008 at 7:41 pm23Discover From Your Favorite Topic or Web Page

[...] (iphone lego apple photography) [Discover] Pesty’s Articles » 如何讓 MediaWiki 可以使用漂亮的網址 http://pesty.yichi.org/blog/2005/12/18/mediawiki_and_pretty_url/ (mediawiki wiki apache reference) [...]

Trackback URI | Comments RSS

沒有留言: