2010-11-12 94 views
3

我的应用程序混合了简单的PHP网页和zend应用程序。有时我需要从zend应用程序的Action重定向到简单的PHP网页。如何从zend应用程序重定向到非zend链接

例如:

我想重定向从example.com/module/controller/actionexample.com/simplephp.php

我试图header("Location: example.com/simplephp.php");,但它无法正常工作。

谢谢

回答

9

是的,基本的重定向操作助手允许您重定向到任何URL。

class MyController extends Zend_Controller_Action { 
    public function indexAction() { 

     $this->_redirect('/path/to/any/page.php'); 
     // or 
     $this->_redirect('http://example.com/anypage.php'); 
    } 
} 
+0

** '的XML标记名称不匹配' **错误,当我用'$此 - > _重定向( '/路径/要/任何/ page.php文件');'。当我使用'$ this-> _redirect('http://example.com/anypage.php')时发现**'303 Found'**错误;'在两种情况下,它都没有重定向。 – Awan 2010-11-12 06:47:22

+0

303找到并不是错误。这是一个重定向...确切地说,你想要它做什么。如果你检查HTTP响应头文件,你会看到有一个Location:头文件被返回到你在$ this - > _ redirect()中提供的URL ... – 2010-11-12 17:23:34

+0

上述解决方案应该工作得很好。如果它不起作用,您可能需要检查您的服务器环境。 303看起来很奇怪。 Zend Framework通常会默认发布302,如果您问得很好,则会发布301。对于使用原始标题(“Location:url”);您需要立即退出(),否则Zend Framework将重新编写您自己的头文件,并且不会根据需要重定向。 – 2010-11-23 16:29:34

3

HTTP/1.1需要绝对URI作为参数。请求应包含http://https://

1

您应该操纵发送HTTP标头的request对象。

如果你想做的事:

header("Location: example.com/simplephp.php"); 

你需要:

$request->setHeader('Location', 'example.com/simplephp.php', true); 

然后,你需要关闭布局,视图渲染和一些并不需要任何其他的事情等

处理重定向的简单方法是不用担心太多的细节问题Redirector action helper。您甚至可以在控制器外部使用它,从Helper Broker中检索它的静态实例。

注意,即使短网址在几乎所有的浏览器,你总是应该指定为HTTP 1.1指定位置(包括协议和域名),完整的URL。