我正在使用Zend Framework开发一些应用程序。我在我的localhost上开发,然后将其上传到某个子域,如abc.mydomain.com。当我上传我的布局index.phtml时,我得到以下所有网址:
abc.mydomain.com/css/base.css 404 (Not Found)
在Web浏览器控制台上,但我的CSS位于公共文件夹中。
我链接此css的代码是:
<?php echo $this->headLink()->appendStylesheet('/css/base.css') ?>
如何使这些地址有效?
完成我的问题:框架如何区分文件夹和控制器?或者我怎么能告诉框架不对这些URL ass动作采取行动,它们是文件夹?
答案 0 :(得分:0)
通常,baseUrl()
视图助手会检测(在内部使用Zend_Controller_Front::getBaseUrl()
方法)应用的基本网址。
但有时候,根据你的vhost设置和doc根目录中你公共文件夹的位置 - 你需要明确告诉应用你的base-url是什么。
在application/configs/applicatiom.ini
中,您可以设置:
resources.frontController.baseUrl = "http://abc.mydomain.com"
然后在视图脚本中,您可以使用baseUrl()
view-helper和 relative url(相对于您设置的基础)访问公共资源,如下所示:
<?php echo $this->headLink()->appendStylesheet($this->baseUrl('css/base.css')) ?>
虽然我看到很多人将它用作仅前缀:
<?php echo $this->headLink()->appendStylesheet($this->baseUrl() . '/css/base.css') ?>
答案 1 :(得分:0)
听起来像是与托管子域相关联的映射问题。通常在共享主机上,您无法将项目的public
文件夹映射到子域。因此,需要各种重写技巧将页面和资产请求映射到正确的目录,而不会让ZF混淆请求的URL。
退房:
http://www.papayasoft.com/2010/05/08/zend-framework-shared-hosting/
有关问题的描述和解决问题的各种方法。