Php 带路径的zend框架问题

Php 带路径的zend框架问题,php,zend-framework,Php,Zend Framework,我已经在本地机器上安装了zend framework。我在httpd.conf中配置了vhost,并在我的hosts文件(127.0.0.1 mysite)中添加了一行。我正在运行Windows7。一切都很完美。问题是,当我上传到托管服务器上时,路径会混淆。 我正在上传一个名为zf framework的远程目录。要访问索引页,我需要键入以下url:。它显示索引页面,但当我按下页面上的任何链接时,它们会混淆起来,并最终成为事实上应该是这样的东西。我找到了一个解决这种情况的方法…对layout.ph

我已经在本地机器上安装了zend framework。我在httpd.conf中配置了vhost,并在我的hosts文件(127.0.0.1 mysite)中添加了一行。我正在运行Windows7。一切都很完美。问题是,当我上传到托管服务器上时,路径会混淆。
我正在上传一个名为zf framework的远程目录。要访问索引页,我需要键入以下url:。它显示索引页面,但当我按下页面上的任何链接时,它们会混淆起来,并最终成为事实上应该是这样的东西。我找到了一个解决这种情况的方法…对layout.phtml中的任何链接使用echo$this->baseUrl(link)。提交表格的问题更为严重。我不能在那里使用baseUrl…或者我不知道如何使用它。有没有一种方法可以编写一些常规配置的东西,这样框架就可以自动解决这个问题。比如说在index.php或bootstrap.php中编写一些自动修复路径的东西?

我不是100%同意这一点,但是如果您在routes.ini中指定路由为zf framework/public/Controller/Action等,这应该可以解决您的问题

我会将此视为bandaid,但我不能100%确定如何正确解决您的问题,除非您修改远程服务器上的vhosts文件以将文档根目录设置为公用文件夹。如果这不是一个选项,那么上面的内容应该可以使用,但是要知道所有人都有可能访问您的所有文件(至少是您的文件夹结构)。如果您的数据库模式位于/data目录中,我不确定这会造成什么危害(如果有)


如果可能,最好尝试将public设置为web根目录。

如果您使用的是Zend_应用程序,请将以下内容添加到您的configs/Application.ini文件中

resources.frontController.baseUrl=“/your path here”

如果您没有使用Zend_应用程序,请在引导程序或index.php文件中执行此操作

$front = Zend_Controller_Front::getInstance();
$front->setBaseUrl('/your-path-here');
将表单提交到同一个操作和控制器(只需在表单标记中省去action属性)或使用重定向器操作帮助器时,不必使用$this->baseUrl()。但是,视图脚本中的链接将要求您使用$this->baseUrl('/url without base'),这对我来说并不太糟糕