看看这个网站www.fltdata.com.出于某种原因,无论您进入哪个页面而不是指向主页,主页链接都指向当前页面.它在我的localhost上工作正常但在线它的行为就像这样.主链接的href值只是:$ this-> baseUrl()
这里有什么不对..
===编辑===
好吧,我创建了一个帮助器,如下所示:
class Zend_View_Helper_BaseUrl { protected $_baseUrl; function __construct() { $fc = Zend_Controller_Front::getInstance(); $this->_baseUrl = $fc->getBaseUrl(); } function baseUrl() { return $this->_baseUrl; } }
这是我想每当我调用$ this-> baseUrl时都会被调用.这可能是问题 - 但它在我的本地主机上工作正常,而不是在线 - 所以必须是某种配置问题 - 我应该在哪里看?
如果不了解有关ZF设置和网址重写设置的更多详细信息,很难说出这里出了什么问题.背后的逻辑Zend_Controller_Request_Http::getBaseUrl()
- Zend_View_Helper_BaseUrl::baseUrl()
如果baseUrl
在前端控制器中没有明确设置,那么你的调用就会被调用- 非常复杂并涉及4个不同的服务器变量(还有一些在确定当前请求URI的过程中).
解决此问题最简单的方法可能是baseUrl
在引导程序中设置前端控制器上的(相对于服务器根目录).如果您正在使用新的Zend_Application
-bootstrapping,则只需添加即可
resources.frontController.baseUrl = "/subdir"
到你的配置.
编辑
您的帮助程序或多或少类似于baseUrl
ZF附带的原始-helper.原来的也代理Zend_Controller_Front::getBaseUrl()
.你使用哪个版本的ZF?有没有理由不使用发货的baseUrl
-helper?
您是否尝试过baseUrl
明确设置引导?
我通常使用配置对象作为基本URL,然后在public/index.php的index.php中定义它
$config = new Zend_Config_Ini( APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); $baseUrl = $config->baseHttp; define('BASE_URL', $baseUrl);`
在configs/application.ini中我有生产部分
[production] baseHttp = "http://whatever.net"
这样,如果我需要在开发中使用不同的基本URL,我可以为baseHttp个人添加一个不同的变量,我想如果你想让baseurl不要复杂,那么它比在自己的类中包装更简单.有时OOP太多OOP.此外,它还可以使安装程序更易于管理.你甚至可以获得$ _SERVER变量来获取主机名并用http://包装它