2010-08-12 63 views
2

我注意到,當我從服務器運行一個zend框架應用程序,有很多副作用。主要的問題是我所使用的網址一樣Zend Framework:從一個文件夾(不是/)

/auth/login 

我需要使用

$this->baseUrl('/auth/login'); 

這就是簡單的修復。但是當我使用

$request->getRequestUri() 

用於重定向。例如,在登錄後,我想將用戶重定向到prev頁面,它會轉到錯誤的地方。例如。我的應用根目錄是「http://localhost/app1」,$request->getRequestUri()會給/app1。當我嘗試重新導向時,它將轉到http://localhost/app1/app1。順便說一句,我使用Zend服務器+ IIS7和我的應用程序被配置爲從上述網址運行。也許我會去「/」來代替。我該如何解決這個問題?

更新

這是我的Zend_Form類

// (Zend_Form) Login.php init() 
$req = Zend_Controller_Front::getInstance()->getRequest(); 
$returnUrl = $req->getParam('returnUrl', $req->getRequestUri()); 
$this->addElement('hidden', 'returnUrl', array(
    'value' => $returnUrl 
)); 

// AuthController after login 
$returnUrl = urldecode($form->getElement('returnUrl')->getValue()); 
if (!empty($returnUrl)) { 
    $this->_helper->getHelper('Redirector')->setGotoUrl($returnUrl); 
} 
+0

你的重定向是怎麼樣的? $ request-> getRequestUri()返回/ app是預期的行爲。 請問你的問題更精確。 – 2010-08-12 17:13:58

+0

重定向時發佈代碼! – 2010-08-12 19:58:33

+0

@keyne @Benjamin,更新了我的帖子 – 2010-08-13 01:43:53

回答

1

如果你正在使用Zend_Application,你可以在你的application.ini中使用它,並且不需要指定其他任何東西。

resources.frontController.baseUrl = "/your/public/path/" 
0

我已經解決了這個問題,在Apache CONFIGS的幫助。在文件\ usr \ local \ apache \ conf \ vhosts.conf中找到您的站點的一個塊並更改路徑和公用文件夾。

+0

我現在用iis了,我用了apache b4 tho。我正在嘗試使用IIS的ZS,聽說它更快的 – 2010-08-12 14:27:55

2

基於你更新:
prependBase - 選項在重定向你正在尋找:

prependBase:布爾標誌,指示是否預先考慮基礎URL時相對URL提供

所以你的解決方法是:

$this->_helper->getHelper('Redirector')->setGotoUrl($returnUrl, array('prependBase' => false)); 
+0

作品像一個魅力。我很好奇任何使用'prependBase = true'的理由? – 2010-08-13 10:42:58

相關問題