【发布时间】: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 提供了对什么是“点编码”过程的快速解释,但没有说明如何从中排除括号。
【问题讨论】:
-
@Tgr 工作就像一个魅力!重新发布作为答案,我会接受!
标签: .htaccess hyperlink url-rewriting mediawiki urlencode