Страница CakePHP 2.0 по умолчанию не имеет макета и показывает ошибку mod_rewrite - PullRequest
0 голосов
/ 30 октября 2011

Я только что настроил cakePHP 2.0 на моем сервере, но на странице по умолчанию не применяется макет и css.Также отображается следующая ошибка:

Перезапись URL-адреса неправильно настроена на вашем сервере.1) Помогите мне настроить его 2) Я не / не могу использовать перезапись URL

Я уже обнаружил, что проблема no-layout / css, вероятно, связана с ошибкой перезаписи URL, поэтому явыполнили шаги, описанные в этой странице поваренной книги , но это не имеет никакого эффекта.Ошибка перезаписи URL все еще видна, и страница по умолчанию по-прежнему пропускает свой макет и стили CSS.

Некоторая информация

  • Отображать ошибки в php.Ини включен
  • Файлы css и favicon.ico, включенные в заголовок html, дают 404
  • Оба файла находятся в папке webroot
  • Расположение папки webroot - / admin / app/ webroot /
  • phpinfo () говорит, что модуль mod_rewrite загружен
  • Структура папки выглядит следующим образом:
    • html (корневая папка apache)
      • admin
        • app
          • ...
          • webroot
            • css
              • cake.generic.css
          • ...
        • торт
        • lib
        • ...
В журнале ошибок отображаются только
[error] [client 212.***.***.***] File does not exist: /var/www/html/admin/css, referer: http://***.nl/admin/
[error] [client 212.***.***.***] File does not exist: /var/www/html/admin/img, referer: http://***.nl/admin/ 
[error] [client 212.***.***.***] File does not exist: /var/www/html/admin/favicon.ico

Содержимое / admin / app / webroot/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /admin/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Содержимое /admin/app/.htaccess

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

1 Ответ

2 голосов
/ 31 октября 2011

Я изначально разместил это как комментарий, но так как это, похоже, имеет отношение к ФП, я сделаю это официальным ответом. Ссылка на таблицу стилей выдает ошибку 404.

Под макетом вы не имеете в виду HTML? Правильно ли загружен файл cake.generic.css? Div сообщения mod_rewrite скрывается по умолчанию CSS, если модуль правильно загружен, но если CSS не включен, вы все равно можете его увидеть.

У меня была эта проблема на установках 1.3, поэтому я не уверен, относится ли это к 2.0.

Что касается ошибки 404, то это может быть лишним вопросом: но действительно ли файл favicon.ico присутствует в каталоге webroot и cake.generic.css в /webroot/css/?

Кроме того, вы запускаете приложение в подкаталоге или каталог app находится в корневом каталоге HTTP веб-сервера?

Если вы запускаете приложение в подкаталоге, вы можете изменить RewriteBase как в .htaccess каталога app (или как там он называется), где хранятся ваши модели, контроллеры и т. Д., Так и webroot каталог.

.htaccess для каталога /app:

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

А /app/webroot:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /YOUR_APP_DIR/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Измените YOUR_APP_DIR на соответствующий путь на вашем веб-сервере. Вот еще на определенных установках Cake, это может быть применимо к вашей установке.

EDIT: .Htaccess выглядит неправильно. Я думаю, что должно быть: /admin/app/ в обоих файлах.

Если это не сработает, вы можете исследовать способ вызова CSS в default.ctp. Вызов CSS отформатирован примерно так в default.ctp: <?php echo $this->Html->css(array("/css/cake.generic"), "stylesheet", array("media"=>"screen")); ?>

Вы также можете переопределить набор default.ctp, поместив файл с таким именем в /View/Layouts, пример поваренной книги можно найти здесь . Когда это будет сделано, вы можете поэкспериментировать с полным путем к файлу css и посмотреть, правильно ли его обслуживает сервер.

...