停止MediaWiki编码括号中的圆括号
我最近在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提供的“点编码”的过程就是一个快速的解释,虽然不是如何从中排除括号。
MediaWiki将代码ID编码为HTML4 restrictions。这是MediaWiki最近使用HTML5时的过去遗留问题,它们删除了这些限制。您可以将$wgExperimentalHtmlIds
设置为true,以使MediaWiki遵循HTML5规则(只有空白需要转换)。
这被称为“实验性”,因为当时(该设置在2010年推出)浏览器对HTML5的支持有点不可靠。今天这可能很好,但没有人真正测试过,所以使用它需要您自担风险。
谢谢!选项周围的背景也很有趣! –
试试['$ wgExperimentalHtmlIds'](https://www.mediawiki.org/wiki/Manual:$wgExperimentalHtmlIds)。 – Tgr
@Tgr就像一个魅力!重新发布,作为答案,我会接受它! –