Phalconphp路线不起作用

时间:2013-10-26 10:52:10

标签: .htaccess phalcon

我是phalconphp的新手,并按照他们的教程,据我所知,我不需要创建一个特定的路由组件,如果它存在,它应该选择一个路由。我显然可能在这里严重错误,这意味着我应该很容易纠正我!但到目前为止,唯一可以工作的控制器是我的indexController。

这是我的引导程序

<?php

try {

//Register an autoloader
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
    '../app/controllers/',
    '../app/models/'
))->register();

//Create a DI
$di = new Phalcon\DI\FactoryDefault();

//Setting up the view component
$di->set('view', function(){
    $view = new \Phalcon\Mvc\View();
    $view->setViewsDir('../app/views/');
    return $view;
});

//Handle the request
$application = new \Phalcon\Mvc\Application($di);

echo $application->handle()->getContent();

} catch(\Phalcon\Exception $e) {
  echo "PhalconException: ", $e->getMessage();
}

然后如果我创建自己的FooController

<?php

class FooController extends \Phalcon\Mvc\Controller
{

public function indexAction()
{

    echo "FOO";

}

public function fooAction(){
    echo "FOO";
}

}

这些行动都不会被解雇。现在我实际上从服务器收到404错误文档。所以我不确定我的.htaccess文件是否存在问题,尽管这是直接从教程中复制的

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
   </IfModule>

任何人都可以在这里看到任何明显错误吗?唯一的区别是我为indexController设置了一个视图。我认为这是404导致我相信它更像服务器设置的问题,或许我的PHP代码

2 个答案:

答案 0 :(得分:2)

您的.htaccess文件很好,不,如果您只想使用标准的MVC /控制器/操作类型模式,则不需要任何路由文件。

您的问题是您的http服务器没有正确重写URL。我不确定您使用的是哪个http服务器,因此,我无法提供有关修复http服务器本身的任何细节。

答案 1 :(得分:1)

关闭MultiViews或者apache将尝试通过添加一些扩展名(.txt,.html,.htm,.php ...)来查找文件,然后重定向变量_url是错误的。

<IfModule mod_rewrite.c>
  Options -MultiViews
  RewriteEngine on
  RewriteRule  ^$ public/    [L]
  RewriteRule  (.*) public/$1 [L]
</IfModule>