cakephp внутри подкаталога
У меня проблема с CakePHP, я не могу найти способ заставить CakePHP работать в подкаталоге. У меня есть веб-страница, которая находится на www.example.com
и я хочу иметь приложение CakePHP на www.example.com/cake
, www.example.com
это виртуальный хост и cake
это подкаталог, в котором хранятся все файлы тортов и каталоги. Проблема в том, что когда я иду в www.example.com/cake
он запрашивает CakeController и не загружает таблицы стилей. Когда я иду в www.example.com/cake/users/register
знак равно UsersController::register()
) он показывает правильный сайт, но опять же без CSS.
Так что мне нужны две вещи... чтобы получить www.example.com/cake
для отображения домашней страницы и загрузки загруженных таблиц стилей.
Разве вы не знаете, как этого добиться?
заранее спасибо
3 ответа
Вы прочитали эту страницу в книге и внесли соответствующие изменения в /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
в приложение / webroot. Таким образом, он будет вести себя именно так, как вы хотите, то есть:
www.example.com/staticPage.html
- отображает статическую страницу.
www.example.com/users
- отображает индекс пользователей
Файлы в webroot обслуживаются точно так же, как если бы они были в корне сайта. Подумайте о файлах CSS и JavaScript.
Скорее всего, ваш mod_rewrite не включен в Apache на вашей учетной записи хостинга. Посоветуйтесь с вашим хозяином. Другая возможная проблема описана ниже:
Вы изменили пути в webroot / index.php?
Вам нужно настроить пути в этом файле, чтобы они указывали на папку с основными файлами Cake, основываясь на пути к каталогу вашего хостинг-провайдера.
Например,
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');
}
Все вышеперечисленное зависит от вашего каталога на вашей учетной записи хостинг-сервера. Как ваш хост для ваших корневых данных пути, так что вы можете указать его соответствующим образом.
Я не знаком с Cake, но это почти наверняка какая-то проблема пути. Убедитесь, что путь к таблицам стилей указан правильно.
Я знаю, что некоторые фреймворки будут использовать функцию base_url() (или что-то с таким же именем), которая возвращает значение конфигурации, вы должны проверить свою конфигурацию, чтобы убедиться, что базовый URL установлен правильно.