Zend框架路径问题

时间:2010-01-21 22:40:39

标签: php model-view-controller zend-framework

所有

除了“欢迎使用Zend Framework”屏幕之外,我只是想查看任何页面。

我已从本教程下载了该项目: http://framework.zend.com/docs/quickstart/create-a-form (Zend Framework快速入门)

据我所知,路径正确。我看过这篇文章: http://www.johnmee.com/2008/11/zend-framework-quickstart-tutorial-deploy-to-a-subdirectory-instead-of-web-root/ 我认为它可能有点过时了,因为引导代码并不像他描述的那样。

有没有人有任何想法?我认为Zend的教程下载应该是开箱即用的。

要点: http://localhost/ZendFrameworkQuickstart/public/ 显示:Zend欢迎页面

http://localhost/ZendFrameworkQuickstart/public/guestbook 显示:404

谢谢!

UPDATE “公共”目录的物理路径: C:\ Zend的\的Apache2 \ htdocs中\ ZendFrameworkQuickstart \公共

我正在从浏览器点击的网址: http://localhost/ZendFrameworkQuickstart/public/guestbook

.htaccess内容:

SetEnv APPLICATION_ENV开发

RewriteEngine On

RewriteCond%{REQUEST_FILENAME} -s [OR]

RewriteCond%{REQUEST_FILENAME} -l [OR]

RewriteCond%{REQUEST_FILENAME} -d

RewriteRule ^。* $ - [NC,L]

RewriteRule ^。* $ /ZendFrameworkQuickstart /Public/index.php [NC,L]

更新:更改了文件中的行

的.htaccess RewriteRule ^。* $ /ZendFrameworkQuickstart/public/index.php [NC,L]

的application.ini resources.frontController.baseUrl =“/ ZendFrameworkQuickstart / public”

公共/ index.php的 error_reporting(E_ALL | E_STRICT); ini_set('display_errors',1);

2 个答案:

答案 0 :(得分:1)

终于明白了。在Apache的httpd.conf文件中,将“AllowOverride None”的每个实例更改为“AllowOverride All”。

我不确定为什么Zend没有这个设置,因为我的Zend Framework安装设置Apache。在此更改之后,Quickstart按原样运行(甚至不需要在根目录中)。

感谢您的帮助!

答案 1 :(得分:0)

添加到Jacob的评论:我认为Quickstart应用程序的.htaccess文件中的mod_rewrite条件和规则要求所有内容都相对于域的根目录,特别是将所有内容重写到域的根目录({{1}具体而言。

所以:

  • 调整.htaccess或
  • 中的重写条件和规则
  • 让(虚拟)主机的根目录直接指向Quickstart应用程序的公用文件夹。

另外,请确保在服务器上启用了mod_rewrite(假设您有一个apache服务器)。

修改 由于您的应用程序不是从服务器的根目录运行,您应该仍然可以在引导程序中的某处设置baseUrl。有类似的东西:

/index.php

但是,通过将应用程序放在服务器的根目录中,或者让服务器的根目录指向httpd.conf中的公共文件夹来解决这个问题,您将节省很多麻烦。选项可供您使用。

如果这样做,请务必再次将.htaccess置于默认设置。