cakephp внутри подкаталога

#php #cakephp #cakephp-1.3 #subdirectory

#php #cakephp #cakephp-1.3 #подкаталог

Вопрос:

У меня проблема с cakephp, я не могу найти способ заставить cakephp работать в подкаталоге. У меня есть веб-страница, которая находится по адресу www.example.com , и я хочу, чтобы на ней было приложение cakephp www.example.com/cake . www.example.com это виртуальный хост и cake это подкаталог, в котором хранятся все файлы и каталоги cake. Проблема в том, что когда я захожу в www.example.com/cake , он запрашивает CakeController и не загружает таблицы стилей. Когда я захожу на www.example.com/cake/users/register (= UsersController::register() ), он показывает нужный сайт, но опять же без CSS.

Итак, мне нужны два things…to получите www.example.com/cake для отображения домашней страницы и загрузки таблиц стилей.

Разве вы не знаете, как этого добиться?

Заранее спасибо

Ответ №1:

Вы читали эту страницу в книге и внесли соответствующие изменения в /app/webroot/index.php ?

Редактировать:

Проблема в том, что когда я захожу в www.example.com/cake он запрашивает CakeController и не загружает таблицы стилей.

Похоже, это указывает на то, что у вас неправильный .htaccess в корне вашего сайта (www, htdocs, public_html или что-то еще), поскольку он пытается обработать запрос в структуру CakePHP.

Это не должно выглядеть так

 <IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
  

Почему бы вам не упростить себе жизнь и не поместить CakePHP в корневой каталог и не переместить страницы, которые находятся по адресу www.example.com , в app / webroot. Таким образом, он будет вести себя точно так, как вы хотите, т.е:

www.example.com/staticPage.html — отображает статическую страницу.

www.example.com/users — отображает индекс пользователей

Файлы в webroot обслуживаются точно так же, как если бы они находились в корне сайта. Подумайте о файлах css и javascript.

Комментарии:

1. Ну, в изменениях не было необходимости, поскольку пути ведут к нужным каталогам

Ответ №2:

Скорее всего, ваш mod_rewrite не включен в Apache в вашей учетной записи хостинга. Проконсультируйтесь с вашим хостом. Другая возможная проблема, описанная ниже:

Вы изменили пути в webroot/index.php ?

Вам нужно настроить пути в этом файле так, чтобы они указывали на папку Cake core files на основе пути к каталогу вашего хостинг-провайдера.

Например,

 if (!defined('CAKE_CORE_INCLUDE_PATH')) { 
    define('CAKE_CORE_INCLUDE_PATH', 'home' . DS .'w3dev' . DS . 'public_html' . DS . 'clients' . DS . 'folderName' . DS . 'remote' . DS . 'v1.1' . DS .  'cake'); 
}
  

И

 if (!defined('APP_DIR')) {
    define('APP_DIR', basename(dirname(dirname(__FILE__))). DS . 'v1.1' . DS . 'app'); 
}
  

Все вышесказанное зависит от вашего каталога в учетной записи вашего хостингового сервера. В качестве вашего хоста для данных вашего корневого пути, чтобы вы могли указать его соответствующим образом.

Комментарии:

1. ну, мой CAKE_CORE_INCLUDE_PATH is /var/www/example/cake , который в порядке, APP_DIR is app , который, я думаю, тоже хорош, и ROOT тот же, что и путь к ядру indluce: /var/www/example/cake .

2. Я этого не понимаю — вверху вы говорите, что у вас есть приложение cake в разделе cake. Здесь вы, кажется, подразумеваете, что приложение cake находится в примере.

3. Leo, cake и app находятся в одном каталоге (не являются вложенными друг в друга). Мой пример, вероятно, был плохим, но это было просто для того, чтобы дать некоторые рекомендации : )

4. структура каталогов следующая: /var/www/example/cake/app и /var/www/example/cake/cake … возможно, мне не повезло поместить все это в cake каталог, но с этого момента вы должны понимать, чего я пытаюсь достичь

5. Итак, ваш CAKE_CORE_INCLUDE_PATH должен быть: /var/www/example/cake/, а ваш APP_DIR должен быть: cake/ app , но вам нужно использовать ту же структуру, которую я изложил с помощью . DS . разделители и т.д.

Ответ №3:

Я не знаком с Cake, но это почти наверняка какая-то проблема с path. Убедитесь, что путь к вашим таблицам стилей указан точно.

Я знаю, что некоторые фреймворки будут использовать функцию base_url() (или что-то с аналогичным названием), которая возвращает значение конфигурации, вам следует проверить свою конфигурацию, чтобы убедиться, что базовый URL установлен правильно.