从MediaWiki操作URL中删除index.php
好的,这就是如何从URL中隐藏index.php?title=bit,但我想为所有操作类型链接隐藏它,类似于扩展的工作方式(它不在我的站点上,我不知道如何修复它)。我没有访问.htaccess的权限,并且正在考虑通过向common.js页面添加一些javascript,或者通过修改ShortLinks扩展来实现,但是这些钩子上的文档不是很好,我尝试的任何东西都没有帮助。基本上,您需要为每个要使用短URL的操作添加一个条目 例如,如果您希望页面从MediaWiki操作URL中删除index.php,mediawiki,Mediawiki,好的,这就是如何从URL中隐藏index.php?title=bit,但我想为所有操作类型链接隐藏它,类似于扩展的工作方式(它不在我的站点上,我不知道如何修复它)。我没有访问.htaccess的权限,并且正在考虑通过向common.js页面添加一些javascript,或者通过修改ShortLinks扩展来实现,但是这些钩子上的文档不是很好,我尝试的任何东西都没有帮助。基本上,您需要为每个要使用短URL的操作添加一个条目 例如,如果您希望页面Foobar的普通视图URL为/wiki/Foobar
Foobar
的普通视图URL为/wiki/Foobar
,而编辑和历史URL为,比如说,/wiki/edit/Foobar
和/wiki/history/Foobar
,您应该在LocalSettings.php中添加以下行:
$wgacterpath='/wiki/$1';
$wgactionpath['edit']='/wiki/edit/$1';
$wgactionpath['history']='/wiki/history/$1';
当然,您还需要配置web服务器,将对这些短URL的任何请求重写回MediaWiki可以理解的内容,例如在Apache上使用mod_rewrite。我上面链接的文档页面有一些有用的例子
一般来说,您可以使用或钩子以任意方式转换MediaWiki生成的URL。(这两个钩子之间的主要区别是GetLocalURL钩子也被称为interwiki URL。)这些钩子是从调用的,您可能想看看它们是如何工作的 例如,下面是如何将不同的URL转换为格式
/wiki/diff/revA/revB/Page\u name
:
函数prettyDiffURLs($title,&$url,$query){
if(preg_match('/^diff=(\w+)&oldid=(\w+)$/',$query,$matches)){
$dbkey=wfUrlencode($title->getPrefixedDBkey());
$url=“/wiki/diff/$matches[1]/$matches[2]/$dbkey”;
}
返回true;
}
$wgHooks['GetLocalURL::Internal'][]='prettyDiffURLs';
(警告:我相信这段代码应该可以工作,但我还没有测试过!)我的最终答案(感谢上面的答案)是:
函数pretty_diff($title,&$url,$query)
{
if(preg_match('/diff=(\w+)&oldid=(\w+/”,$query,$matches))
{
$dbkey=wfUrlencode($title->getPrefixedDBkey());
$url=“/wiki/$dbkey?$matches[0]”;
}
返回true;
}
$wgHooks['GetLocalURL::Internal'][]=“pretty_diff';
但我最终用javascript函数替换了它,以覆盖更多的链接,这太棒了,非常感谢:D是否有类似的方法使最近的更改提要上的差异url保持相同?是否有任何方法将节号(以及可能的节标题)添加到编辑url的末尾?那是真的cool@FallingBullets:您可以通过编写自定义挂钩来完成所有这些(以及更多!);请参见上面的编辑。好的,wgHook工作正常,但缺少“比较所选修订”按钮和其他diff/oldid/newid/etc查询组合。谢谢你的帮助,很抱歉没有尽快回复你,我没有注意到/收到通知。有这么多的URL被推送到
/w/index.php?
,有没有更好的方法连接到它?将名称空间重定向到/$NS/$title
也很酷,例如/category/things
?