Я разрабатываю веб-сайт PHP, который использует URL-маршрутизацию. Мне бы хотелось, чтобы сайт не зависел от каталогов, чтобы его можно было перемещать с http://site.example.com/ на http://example.com/site/ без необходимости изменения каждого пути в HTML. Проблема возникает, когда я ссылаюсь на файлы, которые не подлежат маршрутизации, такие как CSS-файлы, изображения и так далее.
Например, предположим, что представление для действия index
контроллера welcome
содержит изображение img/banner.jpg
. Если страница запрашивается с URL http://site.example.com/welcome,, браузер запросит изображение как http://site.example.com/img/banner.jpg,, что вполне нормально. Но если страница запрашивается с URL-адресом http://site.example.com/welcome/index,, браузер сочтет, что welcome
является каталогом, и попытается извлечь изображение как http://site.example.com/welcome/img/banner.jpg,, что явно неверно.
Я уже рассмотрел некоторые варианты, но все они кажутся мне несовершенными:
Используйте переписывание URL для перенаправления запросов из (*. Css | *. Js | ...) или ( css / * | js / * | ...) на правильный путь.
Проблемы : Каждое расширение должно быть названо в правилах перезаписи. Если кто-то добавит новый тип файла (например, файл mp3), он не будет переписан.
Предварительно добавьте базовый путь к каждому относительному пути с помощью функции php. Например:
<img src="<?php echo url::base(); ?>img/banner.jpg" />
Проблемы : выглядит беспорядочно; css - и js - файлы, содержащие пути, должны обрабатываться PHP.
Итак, как вы сохраняете независимость каталога сайта? Есть ли лучший / более чистый способ, чем тот, который я придумал?