【问题标题】:Stop MediaWiki encoding parentheses in section anchors在部分锚点中停止 MediaWiki 编码括号
【发布时间】:2016-05-03 16:57:13
【问题描述】:

我最近在 HostGator 托管的服务器(我相信基于 Apache)上安装了 MediaWiki 1.23.9。我把它全部配置好了,漂亮的 URL 启动并运行,动作 URls 也正确重写,一切都很好。然而,我注意到锚链接,特别是自动生成的部分标题,并不是那么漂亮。出于某种原因,他们经历了“点编码”,我不确定 100%。

这导致/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 提供了对什么是“点编码”过程的快速解释,但没有说明如何从中排除括号。

【问题讨论】:

标签: .htaccess hyperlink url-rewriting mediawiki urlencode


【解决方案1】:

MediaWiki 对部分 ID 进行编码以纪念 HTML4 restrictions。这是过去的遗物,因为 MediaWiki 现在使用 HTML5,消除了这些限制。您可以将 $wgExperimentalHtmlIds 设置为 true 以使 MediaWiki 遵循 HTML5 规则(其中只需要转换空格)。

这被称为“实验性”,因为当时(该设置于 2010 年引入)浏览器对 HTML5 的支持有些不可靠。今天这可能没问题,但没有人实际测试过,所以使用它需要您自担风险。

【讨论】:

  • 谢谢!这个选项的背景也很有趣!
猜你喜欢
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 2021-08-18
  • 2021-10-21
  • 2021-09-15
  • 1970-01-01
相关资源
最近更新 更多