2016-04-27 41 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

谢谢!选项周围的背景也很有趣! –