2011-03-21 141 views
0

我的Zend框架路由设置不能按需要工作。当我访问“site”时,根据需要执行application/modules/default/views/script/index/index.phtml下的代码。如何在Zend Framework中调试路由?

但是,当我尝试“网站/家”,我得到一个404错误页面。 apache日志显示(文件不存在:/ var/www/site/public/home)。另外,访问http://site/default/index/index产生相同的结果。 (http://site/index工作正常。)

Zend的版本:1.10.8

阿帕奇/etc/apache2/apache2.conf中:

NameVirtualHost *:80 
<VirtualHost *:80> 
    DocumentRoot "/var/www/site/public" 

    <Directory /var/www/site/public> 
     DirectoryIndex index.php 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

我/var/www/site/public/.htaccess文件

SetEnv APPLICATION_ENV development 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

我/var/www/site/public/index.php

... 
/** Zend_Application */ 
require_once 'Zend/Application.php'; 

// Create application, bootstrap, and run 
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini' 
); 
$application->bootstrap() 
      ->run(); 

我的application.ini文件:

[production] 
phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontController.params.displayExceptions = 0 
resources.modules = "" 

resources.router.routes.home.route = /home 
resources.router.routes.home.defaults.module = default 
resources.router.routes.home.defaults.controller = index 
resources.router.routes.home.defaults.action = index 

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 

resources.view[] = 

autoloaderNamespaces[] = "Site_" 

[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

我曾尝试移动路由到routes.ini和应用程序将它们添加/ bootstrap.php中,如下所示:

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', 'production'); 
    $router = new Zend_Controller_Router_Rewrite(); 
    $router->addConfig($config, 'routes'); 

    $r = new Zend_Controller_Router_Route(
     'home/', 
     array(
      'controller' => 'index', 
      'action'  => 'index' 
    ) 
); 
    $router->addRoute('home', $r); 

然而,这并没有帮助。我花了整整一天的时间阅读手册,书籍和网络论坛,试图找到问题无济于事。 (我一直在下面的 “Zend框架” 由维克拉姆瓦斯瓦尼。)

+0

你知道,如果404错误是来自Apache还是ZF?我看不出你发布的内容有什么明显的错误。 – 2011-03-29 08:34:22

回答

1

我的虚拟主机目录:

<Directory /var/www/site/public/> 
    Options Indexes FollowSymlinks 

    php_admin_flag engine on 
    php_admin_flag safe_mode off 
    php_admin_value open_basedir none 
</Directory> 
1

试试这个Apache虚拟主机配置:

<VirtualHost *:80> 
    DocumentRoot "/var/www/site/public" 
    ServerName mysite 

    <Directory "/var/www/site/public"> 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 
+0

对不起,这个,但谢谢你解决我遇到的类似问题。 Zf不会加载任何控制器。 – Ken 2012-03-16 05:14:20