2010-08-12 61 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

相关问题