Способ избежать использования псевдонима Apache для включения HTML-ресурсов, таких как CSS

Здесь возникает вопрос, потому что мое текущее решение на самом деле не удовлетворяет меня для следующей проблемы:

У меня есть собственная PHP Framework с шаблоном MVC в разработке. И мой Router работает отлично, и у меня есть один вопрос, на который я не мог найти решение.

Ну, я направляю каждый входящий запрос в файл index.php, который находится в базовом пути моей структуры. Конечно, не стоит работать с относительными путями при включении css, например:

<link rel="stylesheet" type="text/css" href="style/include/css/style.css" /> 

Это прекрасно работает в браузере. Конечно, неважно, что я вхожу в URL-адрес, потому что каждый запрос перенаправляется, как указано выше, в индекс, чтобы сделать разумную маршрутизацию возможной.

Однако, когда мой url содержит несколько слэшей, которые выглядят как вложенные папки, например: «/ manual / details / 1_2», тогда я получаю обычный процесс маршрутизации, но браузер не может найти файл css, если я не добавлю «../» для каждого «/ "в моем URL-адресе, чтобы вернуться назад к базовому пути.

Например, для вышеуказанного URL это будет работать вместо этого:

 <link rel="stylesheet" type="text/css" href="../../style/include/css/style.css" /> 

Мое текущее решение:

Я написал функцию PHP в моем классе Routing, которая определяет требуемое количество шаблона «../», и я всегда выполняю функцию перед реализацией ресурса для создания точного пути в любое время.

Пример:

 <link rel="stylesheet" type="text/css" href="<?=Router::getInstance()->getSubdirectoryPrefix()?>style/include/css/style.css" /> 

Излишне говорить, что это очень неудобно, а также отстой, если вы забыли разместить эту функцию. Если ваш маршрут когда-либо изменился или вы забыли, что находитесь в подкаталоге, вы задаетесь вопросом, почему ваш ресурс не найден.

Я также знаю о размещении псевдонима, такого как Alias ​​/ public style / в моей конфигурации виртуального хоста Apache, но я хочу найти другой – внутренний проект и внутренний PHP, не имея незаурядного дерьма, такого как вставка функции псевдонима все время и без настройка виртуального хоста, чтобы структура могла оставаться легкой и не требовала каких-либо неприятных внешних параметров, таких как изменение Virtual-Host.

Я бы хотел услышать ваши решения, лучше всего было бы .htacces – о, и, говоря об этом, я оставляю здесь свой код .htaccess:

 RewriteEngine On Options -Indexes RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* index.php [L] 

Спасибо заранее за вашу помощь ~

Вы должны использовать абсолютные пути вместо относительных путей для ваших html-ссылок (css, javascript, images и т. Д.).

Например:

 <link rel="stylesheet" type="text/css" href="/style/include/css/style.css" /> 

Ведущая косая черта (до style ) означает начало из корневой папки документа, затем переход в папку style и т. Д. (У вас может быть другой префиксный каталог, если он не находится в корневой папке)

У вас были некоторые проблемы, потому что некоторые из ваших правил могут создавать виртуальные каталоги (например: http://domain.com/some/directory/subdirectory/etc/ ).

Кроме того, в вашем htaccess не помешает использовать ведущую косую черту (или RewriteBase )

 Options -Indexes RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* /index.php [L] 

или (оба одинаковы)

 Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* index.php [L]