2013-05-13 3 views
2

Мне был предоставлен довольно большой 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 или такой?

Заранее спасибо.

+0

Хотя это лучше, рекомендуется использовать встроенный в HtmlHelper , использование «базового пути» '/ css/something.css' не должно быть большим препятствием, поскольку оно укажет на веб-сайт/приложения, а не на« корень сервера ». Если вы не планируете перемещать папку 'css' за пределами' webroot/', она должна работать нормально, не изменяя ничего. – Dave

+0

Как отметил Дэйв, использование HtmlHelper - лучший подход. Просто хотел добавить комментарий относительно «плохой привычки»; При использовании CakePHP он * лучше всего использовать абсолютные пути. Относительные пути приведут вас к проблемам, потому что браузер попытается найти CSS * относительно текущего пути *. Например; при использовании 'css/main.css' браузер попытается найти таблицу стилей в'/mycontroller/myaction/1234/css/main.css', что, очевидно, приводит к 404 – thaJeztah

+0

То, что я имею в виду по хорошей практике, заключается в том, что пути не должны быть жестко закодированы, а вместо этого должны быть в виде Router :: url ('/ path/to/file'). – jplozano

ответ

0

$html->script() автоматически добавит /js/ в вывод HTML. Cake's .htaccess затем укажет эти вызовы файлов на /webroot/js/.

Так <?php echo $html->script('jquery-ui-1.8.16.custom.min.js'); ?> выведет

/js/jquery-ui-1.8.16.custom.min.js в HTML.

0

Чтобы заменить все эти URL-адреса, вы действительно можете использовать программу, например, «Фактический поиск и замена» ;-) Я использую ее много.