Мне был предоставлен довольно большой cakePHP (построенный по версии 1.3.10
) для поддержки. Проблема в том, что большинство путей абсолютно (что, на мой взгляд, является плохой привычкой).Абсолютные пути в проекте CakePHP
Например. в default.ctp есть:
<link rel="stylesheet" href="/css/public_new.css" />
, но затем в нижней части того же файла есть:
<?php echo $html->script('jquery-ui-1.8.16.custom.min.js'); ?>
который печатает правильные пути.
Это похоже на то, что оригинальные разработчики сделали сайт помещенным в корень сервера (а не в подкаталог).
вещи ив пытались решить эту проблему без успеха:
- модифицировал файлы .htaccess на /, приложение /, и приложение/Webroot
- добавление тега
Я знаю, может добавить $this->base
в начало каждого пути, но это не решение, так как есть тысячи файлов для модификации :(
Итак, мой вопрос: есть ли такие используя mod_rewrite или такой?
Заранее спасибо.
Хотя это лучше, рекомендуется использовать встроенный в HtmlHelper , использование «базового пути» '/ css/something.css' не должно быть большим препятствием, поскольку оно укажет на веб-сайт/приложения, а не на« корень сервера ». Если вы не планируете перемещать папку 'css' за пределами' webroot/', она должна работать нормально, не изменяя ничего. – Dave
Как отметил Дэйв, использование HtmlHelper - лучший подход. Просто хотел добавить комментарий относительно «плохой привычки»; При использовании CakePHP он * лучше всего использовать абсолютные пути. Относительные пути приведут вас к проблемам, потому что браузер попытается найти CSS * относительно текущего пути *. Например; при использовании 'css/main.css' браузер попытается найти таблицу стилей в'/mycontroller/myaction/1234/css/main.css', что, очевидно, приводит к 404 – thaJeztah
То, что я имею в виду по хорошей практике, заключается в том, что пути не должны быть жестко закодированы, а вместо этого должны быть в виде Router :: url ('/ path/to/file'). – jplozano