从MediaWiki 发出HTTP重定向的推荐方法是redirect()在OutputPage实例上调用该方法(无论您传递的是哪个实例,还是全局实例$wgOut).此方法将URL和HTTP状态代码(默认值为302)作为参数.
(您也可以直接调用PHP header()函数,但使用OutputPage方法不太可能干扰可能还需要设置特殊HTTP头的其他代码.)
如果您拥有的是Title对象,则可以通过调用getFullURL()它来获取相应的URL .如果您只是拥有页面的名称,请将其传递给Title::newFromText()(或在适当的Title类中的其他静态工厂方法之一)以获取它的Title对象,如下所示:
$title = Title::newFromText( $pageName );
if ( $title ) {
global $wgOut;
$wgOut->redirect( $title->getFullURL() );
}
else {
// we've got a bogus page name, deal with it somehow
}
Run Code Online (Sandbox Code Playgroud)
请注意,调用redirect()不会中止请求,甚至不会立即发送响应代码 - 它只是设置一个内部标志,导致OutputPage在output()调用方法时发出相应的HTTP标头.根据您在扩展中使用的确切挂钩,您可能需要设置其返回值(和/或任何特定于挂钩的标志),以告知MediaWiki不需要为页面呈现任何实际内容.
PS.虽然上面的例子中使用了过时$wgOut的全局变量来获得OutputPage例如,在现代链接到MediaWiki代码,你应该从目前获得它的RequestContext代替.许多MediaWiki类实现了IContextSource接口,包括SpecialPage,Skin,Title,WebRequest以及OutputPage本身,因此您可以从任何这些接口获取RequestContext.(当然,如果你已经有了一个OutputPage对象,你应该直接使用它.)
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |