2016-04-27 80 views
0

我最近在HostGator託管的服務器上安裝了MediaWiki 1.23.9(我相信這是基於Apache的)。我得到了所有的配置,並獲得了相當的URL並運行,並獲得了動作URls的正確重寫,並且一切都很好。然而,我注意到,錨鏈接,特別是自動生成的節標題,並不那麼漂亮。由於某些原因,我不能100%確定地進行「點編碼」。停止MediaWiki編碼括號中的圓括號

這導致/w/MyPage#Section_1_(Stuff_Here)變爲/w/MyPage#Section_1_.28Stuff_Here.29

括號是有效的URI字符(事實上,如果用在頁面標題中,它們在URI中不能正確編碼),我不明白爲什麼會發生這種情況,也不知道如何阻止它。我瀏覽了各種錯誤報告,甚至嘗試了一下MediaWiki源代碼。我發現了執行編碼的函數,但據我所知,不應該讓括號變得編碼。

我的問題是:有沒有辦法阻止MediaWiki在節標題錨中編碼括號?否則,我可以用.htaccess規則掩蓋這種行爲嗎?作爲參考,我目前的.htaccess文件在下面,儘管我非常希望關掉它而不是掩蓋它。

RewriteEngine On 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d 
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/w/index.php [L] 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d 
RewriteRule ^/?w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/w/thumb.php?f=$1&width=$2 [L,QSA,B] 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d 
RewriteRule ^/?w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/w/thumb.php?f=$1&width=$2&archived=1 [L,QSA,B] 

注:This answer to a different question提供的「點編碼」的過程就是一個快速的解釋,雖然不是如何從中排除括號。

+1

試試['$ wgExperimentalHtmlIds'](https://www.mediawiki.org/wiki/Manual:$wgExperimentalHtmlIds)。 – Tgr

+0

@Tgr就像一個魅力!重新發布,作爲答案,我會接受它! –

回答

1

MediaWiki將代碼ID編碼爲HTML4 restrictions。這是MediaWiki最近使用HTML5時的過去遺留問題,它們刪除了這些限制。您可以將$wgExperimentalHtmlIds設置爲true,以使MediaWiki遵循HTML5規則(只有空白需要轉換)。

這被稱爲「實驗性」,因爲當時(該設置在2010年推出)瀏覽器對HTML5的支持有點不可靠。今天這可能很好,但沒有人真正測試過,所以使用它需要您自擔風險。

+0

謝謝!選項周圍的背景也很有趣! –