Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 апр 2024, 10:43

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 21 мар 2013, 12:44 
Не в сети
Новичок

Зарегистрирован: 12 мар 2013, 12:43
Сообщения: 24
Собственно сабж. На локалке - работает все прекрасно, а на хостинге - выдает ошибку.
Код:
Kohana_HTTP_Exception [ 404 ]: The requested URL / was not found on this server.

SYSPATH/classes/Kohana/Request/Client/Internal.php [ 79 ]

74          if ( ! class_exists($prefix.$controller))
75          {
76             throw HTTP_Exception::factory(404,
77                'The requested URL :uri was not found on this server.',
78                array(':uri' => $request->uri())
79             )->request($request);
80          }
81
82          // Load the controller using reflection
83          $class = new ReflectionClass($prefix.$controller);
84

    SYSPATH/classes/Kohana/Request/Client.php [ 114 ] » Kohana_Request_Client_Internal->execute_request(arguments)

    SYSPATH/classes/Kohana/Request.php [ 990 ] » Kohana_Request_Client->execute(arguments)

    DOCROOT/index.php [ 112 ] » Kohana_Request->execute()


как ее можно исправить?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 мар 2013, 13:22 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Покажите роутинг


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 мар 2013, 13:24 
Не в сети
Новичок

Зарегистрирован: 12 мар 2013, 12:43
Сообщения: 24
Код:
<?php

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */

    
Route::set('admin''admin')
        ->
defaults(array(
            
'directory'  => 'admin',
            
'controller' => 'main',
            
'action'     => 'index',
    ));
    
Route::set('admin_categories''admin/categories/<action>(/<category_id>)', array('action' => 'view|add''category_id' => '.+'))
        ->
defaults(array(
            
'directory'  => 'admin',
            
'controller' => 'categories'
    
));

    
Route::set('admin_articles''admin/articles/<action>(/<category_id>(/<article_id>))', array('action' => 'view|add''category_id' => '[0-9]+''article_id' => '[0-9]+'))
        ->
defaults(array(
            
'directory'  => 'admin',
            
'controller' => 'articles'    
    
));

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

?>


Последний раз редактировалось Sergey 21 мар 2013, 13:25, всего редактировалось 1 раз.
обернул исходники в [code]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 мар 2013, 13:31 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Поправьте роутинг.
Для начала сделайте его читаемей, чище и универсальнее. Что то вроде этого:

# Для администратора

Код:
    Route::set('admin', 'admin(/<controller>)(/<action>)(/<id>)(/p<page>)', array(
        'id'         => '\d+',
        'page'       => '\d+'
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'dashboard',
    ));
 


# Категории

Код:
Route::set('admin/category', 'admin/categories(/<action>(/<id>))(/p<page>)', array(
        'id'         => '\d+',
        'page'       => '\d+',
        'action'     => 'list|add|edit|delete'
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'category',
        'action'     => 'list',
    )); 


# Articles

Код:
    Route::set('admin/article', 'admin/articles(/<action>)/<id>(/p<page>)', array(
        'id'         => '\d+',
        'page'       => '\d+',
        'action'     => 'list|add|edit|delete|confirm'
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'article',
        'action'     => 'list',
    )); 


# По умолчанию

Код:
    Route::set('default', '(<controller>(/<action>(/<id>)))')
        ->defaults(array(
            'controller' => 'welcome',
            'action'     => 'index',
        ));
 


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 мар 2013, 13:33 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Кеширование роутинга в продакшене:
Код:
if ( ! Route::cache())
{
    
//  ...
    //  Какие то роуты
    //  ...

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

    
// Cache the routes in production
    
Route::cache(Kohana::$environment === Kohana::PRODUCTION);
}
 


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 мар 2013, 14:02 
Не в сети
Новичок

Зарегистрирован: 12 мар 2013, 12:43
Сообщения: 24
Код:
   public static function cache($save = FALSE, $append = FALSE)
   {
      if ( ! Route::cache())
      {

         Route::set('admin', 'admin')
               ->defaults(array(
                  'directory'  => 'admin',
                  'controller' => 'main',
                  'action'     => 'index',
            ));
            
         Route::set('admin_categories', 'admin/categories/(<action>(/<category_id>))',
               array(
                     'action' => 'view|add',
                     'category_id' => '\d+')
                  )
               ->defaults(array(
                  'directory'  => 'admin',
                  'controller' => 'category',
                  'action'    => 'view'
            ));

            
         Route::set('admin_articles', 'admin/articles/(<action>(/<category_id>(/<article_id>)))',
               array(
                  'action' => 'view|add',
                  'category_id' => '\d+',
                  'article_id' => '\d+')
                  )
               ->defaults(array(
                  'directory'  => 'admin',
                  'controller' => 'article',
                  'action'    => 'view'
            ));

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

         // Cache the routes in production
         Route::cache(Kohana::$environment === Kohana::PRODUCTION);
      }
      
      if ($save === TRUE)
      {
         try
         {
            // Cache all defined routes
            Kohana::cache('Route::cache()', Route::$_routes);
         }
         catch (Exception $e)
         {
            // We most likely have a lambda in a route, which cannot be cached
            throw new Kohana_Exception('One or more routes could not be cached (:message)', array(
                  ':message' => $e->getMessage(),
               ), 0, $e);
         }
      }
      else
      {
         if ($routes = Kohana::cache('Route::cache()'))
         {
            if ($append)
            {
               // Append cached routes
               Route::$_routes += $routes;
            }
            else
            {
               // Replace existing routes
               Route::$_routes = $routes;
            }

            // Routes were cached
            return Route::$cache = TRUE;
         }
         else
         {
            // Routes were not cached
            return Route::$cache = FALSE;
         }
      }
   }



вот мой обновленный метод. Но ошибка на хостинге не проходит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 мар 2013, 14:59 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
1.
Код:
 public static function cache($save = FALSE, $append = FALSE)
? :shock: т.е. роутинг не в bootstrap.php/init.php
2. кеш чистили на сервере


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 мар 2013, 23:45 
Не в сети
Новичок

Зарегистрирован: 12 мар 2013, 12:43
Сообщения: 24
1. Я использую эту статью, для кеша роутинга.
2. Роутинги я вынес в другой файл, и в конце bootstrap.php, где должны быть роутинги - я подключаю этот файл.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 мар 2013, 05:18 
Не в сети
Бывалый

Зарегистрирован: 09 авг 2012, 13:17
Сообщения: 43
локалке винда , а хостинг линуксовый?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 мар 2013, 12:36 
Не в сети
Новичок

Зарегистрирован: 12 мар 2013, 12:43
Сообщения: 24
rain2 писал(а):
локалке винда , а хостинг линуксовый?


да


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 75


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group