Вспомогательный CSS-тег HTML CakePHP и псевдоним Apache

Как относительный новичок в CakePHP, я надеюсь получить несколько советов о «правильном» способе настройки Apache и CakePHP для поиска включенных файлов (CSS, JavaScript и т. д.).

Если для DocumentRoot моего сервера установлено значение /var/www, а я устанавливаю и настраиваю CakePHP в /var/www/somepath/cakeapp, я могу получить доступ к приложению, как и ожидалось, по URL-адресу http://example.com/somepath/cakeapp.

Однако, если я использую помощник HTML для создания тега ссылки CSS в макете по умолчанию, у меня начинаются проблемы. Например, код

echo $html->css('styles');

производит этот тег:

<link rel="stylesheet" type="text/css" href="/somepath/cakeapp/css/styles.css" />

Однако на самом деле CSS находится в /somepath/cakeapp/app/webroot/css.

Если бы приложение CakePHP было единственным приложением в моем домене, я мог бы указать DocumentRoot на /var/www/somepath/cakeapp/app/webroot, как предлагает документация, и все (предположительно) было бы хорошо. Однако для меня это не вариант.

Существует ли общепринятый правильный способ настройки Apache и CakePHP, чтобы помощник HTML мог создавать правильный тег ссылки?

Редактировать: я чувствую, что должна быть какая-то комбинация конфигурации CakePHP и псевдонимов Apache, с которой я еще не сталкивался.


person eaj    schedule 01.12.2010    source источник


Ответы (2)


/somepath/cakeapp/css/styles.css на самом деле правильный путь, который нужно отображать в ссылках.

Причина, по которой он отображается таким образом, заключается в том, что файл .htaccess в вашем каталоге cakeapp перенаправляет (переписывает) запросы в каталог cakeapp/app/webroot.

Теперь причина, по которой эта структура вообще существует, заключается в том, что обычно в вашем приложении есть «публичные» и «непубличные» части. «Непубличные» части содержат код PHP, включая контроллеры, модели, представления, плагины, библиотеку тортов и т. д. «Общедоступные» части включают css, скрипты и файлы изображений.

Теперь вы можете сделать папку /var/www/html каталогом вашего приложения, чтобы сделать его безопасным. Чтобы полностью настроить приложение по своему вкусу, проверьте файл cakeapp/app/bootstrap.php и измените соответствующие настройки. Подробнее об этом можно узнать здесь.

Короче говоря, не беспокойтесь. Путь, который вы видите, правильный!

person RabidFire    schedule 01.12.2010
comment
Спасибо за исчерпывающий ответ. В конце концов, как вы говорите, моя конфигурация была в порядке. Что меня сбило с толку, так это то, что я случайно упомянул несуществующую таблицу стилей. По-видимому, когда он не нашел файл, CakePHP продолжил интерпретировать запрос как обычно, ища CssController (и, конечно же, не находя его). - person eaj; 01.12.2010
comment
Ах, я обычно держу свою сетевую консоль в Firebug для проверки незагружаемых ресурсов, таких как css, js, изображения и запросы ajax. В любом случае, рад, что у тебя получилось, @eaj - person RabidFire; 01.12.2010

Попробуйте определить RewriteBase в ваших файлах .htaccess в корневом каталоге Cake, /app и /app/webroot, чтобы они указывали на ваш подкаталог. Установите для них соответствующие пути, /somepath/, /somepath/app/ и /somepath/app/webroot/

person Nathan Gaskin    schedule 01.12.2010