простой фронт-контроллер вызывает поломку CSS и JavaScript в PHP - PullRequest
1 голос
/ 07 октября 2011

Я пытаюсь реализовать простой фронт-контроллер в PHP .. В моем index.php;

 $parts = array_slice(explode('/',$_SERVER["REQUEST_URI"]),3);

 if(file_exists($parts[0].'.php'))
    include $parts[0].'.php';
 else
    echo 'not found';

поэтому я набрал адресную строку localhost / myroot / index.php / home, я ожидаю включить home.php. Он включает home.php, но без внешних CSS-файлов и источников JavaScript. Ни один из них не загружен ..

в home.php,

 <link rel="stylesheet" type="text/css" href="styles/master.css" />
 <script type="text/javascript" src="scripts/master.js"></script>

В корневом каталоге есть каталоги стилей и скриптов. /myroot/styles/master.css /myroot/scripts/master.js

, поэтому, если я наберу localhost / myroot / home.php, он будет работать правильно.

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Прекратите использовать относительные URL для вашего CSS и JS

0 голосов
/ 07 октября 2011

Расширить ответ Тереско ...

Браузер не знает (или не заботится), в какой форме находятся ваши URL-адреса. Когда вы используете относительный путь для своих CSS и JavaScript, он ожидает, что они будут относительно последнего каталога.

Итак, если ваша страница имеет значение /somecontroller/somepage/someparamater и вы ссылаетесь на /scripts/master.js, то браузер запросит /somecontroller/somepage/someparameter/scripts/master.js.

Решение состоит в том, чтобы просто поставить / перед этими путями так, чтобы они были относительно корня сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...