重定向到MediaWiki中的wiki页面

重定向到MediaWiki中的wiki页面,mediawiki,Mediawiki,MediaWiki是否有任何API可重定向到使用其标题的页面 我正在编写一个MediaWiki扩展,它可以重定向到可用的页面。有人能告诉我怎么做吗?从MediaWiki发出请求的推荐方法是对实例调用redirect()方法(无论传递哪个实例,还是全局实例$wgOut)。此方法将URL和HTTP状态码(默认为)作为参数 (您也可以直接调用PHP函数,但使用OutputPage方法不太可能干扰其他可能也希望设置特殊HTTP头的代码。) 如果您拥有的是一个对象,则可以通过对其调用getFullURL(

MediaWiki是否有任何API可重定向到使用其标题的页面


我正在编写一个MediaWiki扩展,它可以重定向到可用的页面。有人能告诉我怎么做吗?

从MediaWiki发出请求的推荐方法是对实例调用
redirect()
方法(无论传递哪个实例,还是全局实例
$wgOut
)。此方法将URL和HTTP状态码(默认为)作为参数

(您也可以直接调用PHP函数,但使用OutputPage方法不太可能干扰其他可能也希望设置特殊HTTP头的代码。)

如果您拥有的是一个对象,则可以通过对其调用
getFullURL()
来获取相应的URL。如果您只知道页面的名称,请将其传递到
Title::newFromText()
(或传递到Title类中的其他静态工厂方法之一,如适用)以获取该页面的Title对象,如下所示:

$title=title::newFromText($pageName);
如果($标题){
全球$wgOut;
$wgOut->redirect($title->getFullURL());
}
否则{
//我们有一个伪造的网页名称,设法处理它
}
请注意,调用
redirect()
不会中止请求,甚至不会立即发送响应代码-它只是设置了一个内部标志,当调用
output()
方法时,它会导致OutputPage发出相应的HTTP头。根据您在扩展中使用的钩子的具体情况,您可能希望设置它们的返回值(和/或任何特定于钩子的标志),以告知MediaWiki不需要呈现页面的任何实际内容



注:虽然上面的示例使用不推荐使用的全局变量来获取OutputPage实例,但在现代MediaWiki代码中,您应该从当前变量获取它。许多MediaWiki类实现IContextSource接口,包括SpecialPage、Skin、Title、WebRequest以及OutputPage本身,因此您可以从其中任何一个类获取RequestContext。(当然,如果你已经有了OutputPage对象,你应该直接使用它。)

只要你不离开你的wiki使用

#REDIRECT [[foo]]
将显示foo页面,而不是此页面