我的應用程序混合了簡單的PHP網頁和zend應用程序。有時我需要從zend應用程序的Action重定向到簡單的PHP網頁。如何從zend應用程序重定向到非zend鏈接
例如:
我想重定向從example.com/module/controller/action
到example.com/simplephp.php
。
我試圖header("Location: example.com/simplephp.php");
,但它無法正常工作。
謝謝
我的應用程序混合了簡單的PHP網頁和zend應用程序。有時我需要從zend應用程序的Action重定向到簡單的PHP網頁。如何從zend應用程序重定向到非zend鏈接
例如:
我想重定向從example.com/module/controller/action
到example.com/simplephp.php
。
我試圖header("Location: example.com/simplephp.php");
,但它無法正常工作。
謝謝
是的,基本的重定向操作助手允許您重定向到任何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');
}
}
HTTP/1.1需要絕對URI作爲參數。請求應包含http://
或https://
您應該操縱發送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。
** '的XML標記名稱不匹配' **錯誤,當我用'$此 - > _重定向( '/路徑/要/任何/ page.php文件');'。當我使用'$ this-> _redirect('http://example.com/anypage.php')時發現**'303 Found'**錯誤;'在兩種情況下,它都沒有重定向。 – Awan 2010-11-12 06:47:22
303找到並不是錯誤。這是一個重定向...確切地說,你想要它做什麼。如果你檢查HTTP響應頭文件,你會看到有一個Location:頭文件被返回到你在$ this - > _ redirect()中提供的URL ... – 2010-11-12 17:23:34
上述解決方案應該工作得很好。如果它不起作用,您可能需要檢查您的服務器環境。 303看起來很奇怪。 Zend Framework通常會默認發佈302,如果您問得很好,則會發布301。對於使用原始標題(「Location:url」);您需要立即退出(),否則Zend Framework將重新編寫您自己的頭文件,並且不會根據需要重定向。 – 2010-11-23 16:29:34