#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
isapp
, который, я думаю, тоже хорош, и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 установлен правильно.