2013-11-02 1 views
1

Я настраиваю свое новое веб-приложение с использованием инфраструктуры Kohana.Маршрутизация в Кохане в разработке

Я использую MAMP так что приложение находится в папке htdocs, с этой структурой:

---htdocs 
--foo 
    -application 

Я получаю эту ошибку при просмотре http://localhost:8888/foo/

Kohana_HTTP_Exception[ 404 ]: The requested URL foo was not found on this server. 

В bootstrap.php маршрута по умолчанию Kohana один

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

Вы правильно установили 'base_url' в bootstrap.php (и' RewriteBase' в вашем .htaccess)? – kero

+0

Можете ли вы посоветовать мне, что это должно быть? –

ответ

2

Проверьте файл application/bootstrap.php для:

Kohana::init(array(
    'base_url' => '/foo/', 
)); 

Это необходимо для Kohana, чтобы понять это в /foo/ папке.

UPD The requested URL foo was not found on this server сообщение генерируется исключение, если нет action_<action> метод не был найден в контроллере.

Если не найден маршрут Unable to find a route to match the URI: сообщение об ошибке.

Не shure Маршрутизация работает как ожидалось, но она работает;).

Итак, проверьте свой файл контроллера для подходящего действия.

0

Это будет моя Предпочтительнее структура папок для приложений Kohana под /foo:

├─┬─ htdocs 
│ └─┬─ foo 
│ ├─── .htaccess 
│ └─── index.php 
└─┬─ kohana 
    ├─┬─ application 
    │ ├─── bootstrap.php 
    │ └─── etc... 
    ├─┬─ modules 
    │ └─── etc... 
    ├─┬─ system 
    │ └─── etc... 
    ├─── index.php 
    ├─── install.php 
    └─── etc... 

HTDOCS/Foo/index.php:

<?php 

require '../../kohana/index.php'; 

HTDOCS/Foo/.htaccess:

# Turn on URL rewriting 
RewriteEngine On 

# Installation directory 
RewriteBase /foo/ 

# Protect hidden files from being viewed 
<Files .*> 
    Order Deny,Allow 
    Deny From All 
</Files> 

# 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] 

В kohana/application/bootsrap.php установить 'base_url' в foo:

Kohana::init(array(
     'base_url' => '/foo/', 
     'index_file' => NULL, 
)); 

Если вы хотите запустить Кохана/install.php создать HTDOCS/Foo/install.php и требуют '../../kohana/install.php';

Таким образом, вы храните свои htdocs в чистоте. Если ваш живой сервер когда-либо перестанет обрабатывать файлы PHP по какой-то причине, то единственное, что люди смогут увидеть, - это требование к Kohana's index.php.

RewriteCond для application, modules и system папки не нужны.

Включение режима технического обслуживания очень просто.

+0

Должно ли 'application' dir быть внутри' foo' также? Файлы внутри не должны использоваться совместно с другими системами, использующими ту же кохану, если они? – kero

+0

No.Если у вас есть только одно приложение для приложения «Кохана», это прекрасно работает. Если у вас более одного, запускающего ту же версию, вы можете переместить 'kohana/application /' в 'applications/foo'. Вы не хотите, чтобы 'application /' (или, тем не менее, вы его назвали) под webroot, если вы можете избежать этого. – Darsstar

 Смежные вопросы

  • Нет связанных вопросов^_^