2010-10-01 78 views
1

當前的MediaWiki版本必須通過MediaWiki如何重定向頁面?

http://www.example.com/wiki/index.php/Main_Page 

,而不是舊版本的

http://www.example.com/wiki/index.php?title=Main_Page 

這第二url字面上如何在PHP腳本會在最不經意的web應用程序被調用訪問的頭版,但上面的URL更乾淨,更令人滿意。現在,我可以看到如何可以很容易地與Apache的mod_rewrite規則轉換:

RewriteRule ^/index.php/(.*)$ /index.php?title=$1 

但是有默認鏈接到MediaWiki設置沒有htaccess文件。那麼他們如何做重定向呢?

+0

好了,一些測試用自己的Apache服務器後,它看起來像請求「/helloworld.php/foo/bar」是一樣的,要求「/helloworld.php」。但是,請求「helloworld.html/foo/bar」不同於「/helloworld.html」(前者給出了404)。因此,Apache提供的PHP文件有一些特殊之處。這對我來說似乎相當脆弱;猜我應該問另一個問題,然後...... – MidnightLightning 2010-10-01 17:36:28

+0

不應該是什麼特別的。文件「/helloworld.html」是否存在?如果沒有,將會出現404錯誤。如果文件確實存在,它應該加載html文件。 – 2010-10-01 18:38:41

+0

在我的示例中,存在「/helloworld.html」。在我的本地服務器上測試時,我得到了「/helloworld.html」請求的正確加載(HTTP 200),以及「/helloworld.html/foobar」或「/helloworld.html/foobar/」的404響應 – MidnightLightning 2010-10-01 19:13:25

回答

3

不知道這是他們在做什麼,但沒有必要使用.htaccess重定向。頁面index.php被找到並且該腳本是被加載的。 index.php只是獲取$ _SERVER ['REQUEST_URI']並將其解析爲查詢字符串。

+0

+1我相當肯定,或者非常近似的,正是他們正在做的。 – lonesomeday 2010-10-01 17:10:09

+0

我已經在過去做過,所以我知道它的工作原理。只是不想通過搜索mediawiki找到他們在做什麼來確認它。 – 2010-10-01 17:13:01

+0

所以,當apache獲得「/wiki/index.php/anything」的請求時,它知道「index.php」是文件的時間段嗎?所以如果有人(不明智地)在中間命名了一個文件夾,那麼它的內容將無法通過apache提供服務,因爲它總是假定該文件夾是目標文件,剩下的就是查詢字符串了? – MidnightLightning 2010-10-01 17:26:05