我已经成功地将大多数<a>
网址更改为更漂亮(通过$wgActionPaths和{{3}}的组合将所有数百万条/w/index.php?title=foo&....
链接隐藏到/wiki/Foo?...
中客户端javascript:
jQuery(function ($) {
$('[href*="title="]').attr('href', function (i, value) {
return value.replace(/\/w\/index.php\?title=(.+?)\&(.+?)/, "/wiki/$1?$2")
})
})
(我懒得把它翻译成PHP)
剩下的唯一链接是
的目标网址如何制作这些更清晰的目标网址?
答案 0 :(得分:0)
以下LocalSettings.php
$actions = [ 'watch', 'unwatch', 'delete', 'revert', 'rollback', 'protect',
'unprotect', 'markpatrolled', 'render', 'submit', 'purge' ];
foreach ($actions as $action)
$wgActionPaths[$action] = "/wiki/$1?action=$action";
改变了一些html链接
和MediaWiki:Common.js
$('#searchform').attr('action', '/wiki/Special:Search')
$('form').attr('action', function (i, value) {
return value.replace("/w/index.php", "/wiki/" + $('[name="title"]', this).attr('value'))
})
$("[name='title']",$('form')).remove()
修复搜索操作,以及特殊页面形式
答案 1 :(得分:0)
以下.htaccess
规则可用于将所有 /w/index.php?...&title=Article&...
链接重定向到/wiki/Article?...
变体:
# force any /w/index.php urls back to the /wiki/ variant
RewriteCond %{QUERY_STRING} title=([^&]+)
RewriteRule ^/?w/index.php$ /wiki/%1 [QSA,NE,R=302]
不幸的是,在各个点使用的无数形式导致查询参数为percent-encoded,使得.htaccess
QSA
标志失败,而您最终到达/wiki/Special%3ARecentChanges
例如。在插入%2F
导致所有内容中断的子页面上,这尤其失败。
编辑:可以通过在服务器设置中启用以下RewriteMap
来解决上述百分比编码问题(不适用于.htaccess
本身):>
RewriteMap unescape int:unescape
,然后将%1
行中的RewriteRule
替换为
RewriteRule ^/?w/index.php$ /wiki/${unescape:%1} [QSA,NE,R=302]
编辑:要进一步从最终网址中删除剩余/重复的title=
参数,请包含以下规则(找到here):
# remove title query parameter
RewriteCond %{QUERY_STRING} ^(.*)&?title=[^&]+&?(.*)$ [NC]
RewriteRule ^(/?wiki/.+)$ /$1?%1&%2 [NE,R]