2013-06-28 3 views
0

Я недавно перенес свое приложение с локального окна Windows на хост linux.Проблемы с контроллером развертывания Kohana 3

Мои проблемы в том, что я не могу получить доступ к контроллеру, я всегда получаю сообщение:. Файл не найден (от веб-сервера)

И это странно, потому что тот же базовый код работает на моем локальный.

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' =>'', 
    )); 

И я Accesss www.myapp.com, было бы загрузить пользовательскую функцию. Я не могу понять, что здесь не так, почему, когда я пишу файл myapp.com/user/login, он говорит, что файл не найден, но если я положу его по умолчанию, он откроет его.

ответ

0

Вы установили base_url в bootstrap.php? если нет, то вы должны установить base_url your_project_name/

если да, то вы должны установить RewriteBase/your_project_name/также в вашем .htaccess

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> 

Надеюсь, это поможет другим!