Kohana 3部署控制器问题

时间:2013-06-28 14:52:26

标签: model-view-controller deployment controller kohana-3

我最近将我的应用程序从windows localhost迁移到了linux主机。

我的问题是我无法访问控制器,我总是收到消息:找不到文件。(来自网络服务器)

这很奇怪,因为相同的代码库正在我的localhost上工作。

bootstrap.php:

Route::set('default', '(<controller>(/<action>(/<id>)(/<param1>)(/<param2>)))')
    ->defaults(array(
        'controller' => 'user',
        'action'     => 'index',
                  'param1' =>'',
                  'param2' =>'',
    ));

htaccess的:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /


# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

这里发生的奇怪事情是,如果我去: www.myapp.com/然后默认控制器执行,它找到用户/索引函数。

但是,如果我手动将其写为www.myapp.com/user/index,我会继续收到“找不到文件”消息。

我已经尝试用小写重命名控制器文件,所以我想这不是问题,除非这是问题,默认路由不会在第一时间找到它,对吗?

例如,如果我写入默认路线:

Route::set('default', '(<controller>(/<action>(/<id>)(/<param1>)(/<param2>)))')
    ->defaults(array(
        'controller' => 'user',
        'action'     => 'login',
                  'param1' =>'',
                  'param2' =>'',
    ));

我访问www.myapp.com,它会加载用户功能。我无法弄清楚这里有什么问题,为什么当我写myapp.com/user/login时它说找不到文件,但是如果我把它作为默认路由就打开它。

2 个答案:

答案 0 :(得分:0)

你在bootstrap.php中设置了base_url吗?如果不是,则应设置base_url your_project_name /

如果是,您应该在.htaccess中设置RewriteBase / your_project_name /

答案 1 :(得分:0)

我在另一个与此相关的线程中找到了解决方案。您需要将这段代码添加到.htaccess:

 <IfModule mod_rewrite.c>    
        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
     </IfModule>

希望它可以帮助其他人!