我在本地计算机上安装了zend框架。我在httpd.conf中配置了一个vhost,并在我的hosts文件中添加了一行(127.0.0.1 mysite)。我正在运行Windows 7.一切都很完美。问题是当我在托管服务器上传时,路径混淆了。 我正在上传一个名为zf-framework的远程目录。要访问索引页面,我需要输入以下网址:http://mysite/zf-framework/public。它会显示索引页面,但是当我按下页面上的任何链接时,它们会混淆并最终变成类似http://mysite/controller/action的内容,而实际上它应该是http://mysite/zf-framework/public/controller/action。我找到了解决这种情况的方法......使用echo $ this-> baseUrl(link)来获取layout.phtml中的任何链接。提交表格时问题更严重。我不能在那里使用baseUrl ....或者我不知道如何使用它。有没有办法编写一些通用的配置文件,以便框架可以自动解决这个问题。让我们说在index.php或bootstrap.php中写一些会自动修复路径的东西吗?
答案 0 :(得分:1)
如果您正在使用Zend_Application,请将以下内容添加到您的configs / application.ini文件中。
resources.frontController.baseUrl =“/ your-path-here”
如果您没有使用Zend_Application,请在您的bootstrap或index.php文件中执行此操作。
$front = Zend_Controller_Front::getInstance();
$front->setBaseUrl('/your-path-here');
在向同一个操作和控制器提交表单(只是在表单标记中省略action属性)或使用重定向器操作助手时,您不必使用$ this-> baseUrl()。但是,您的视图脚本中的链接将要求您使用$ this-> baseUrl('/ url-without-base'),这对我来说似乎并不太糟糕。
答案 1 :(得分:0)
我不是100%,但如果你在routes.ini中指定路由为zf-framework / public / Controller / Action等,那么这应该可以解决你的问题。
我会将此视为一个绑定,但我不是100%确定如何正确修复您的问题,然后修改远程服务器上的vhosts文件以将文档根目录设置到公用文件夹。如果这不是一个选项,那么上述应该可行,但要知道所有文件都可以从所有人访问(至少你的文件夹结构)。如果你的数据库模式在/ data目录中,我不确定它可以做什么(如果有的话)。
如果可能的话,最好尝试将公共集设置为Web根目录。