Я использую файл .htaccess
для перенаправления всех запросов на тот же index.php
. Оттуда я решаю, что делать в зависимости от URL-адреса входящего запроса.
Пока, я сопоставляю URL-адрес запроса с структурой каталогов относительно source
папки, так что example.com/user/create
сопоставляет source/user/create/index.php
. Файл, находящийся там, может обрабатывать запрос по мере необходимости и генерировать вывод HTML.
Но это не работает для статических активов, браузер может запросить. Поэтому моя идея состоит в том, чтобы выяснить, заканчивается ли URL-адрес запроса с расширением файла, и сопоставить его с структурой каталогов относительно папки с assets
, чтобы example.com/css/default.css
отображался в assets/css/default.css
, Но я не знаю, как отвечать статическим файлом вместо HTML-кода с PHP.
Обычно это может быть сделано с использованием дополнительного правила .htaccess
, но я хочу динамически менять папку с ресурсами в коде.
Как я могу отправить статический файл, указанный на жестком диске сервера, клиенту браузера в PHP?
На htacess
#Expections RewriteCond %{REQUEST_URI} ^/assets.*$ RewriteRule ^(.*)$ - [L,NC] #You redirect to index ...
поместите a / в начало пути к файлу
/assets/path/to/file
Ну, если вы действительно этого хотите, вы можете просто использовать readfile()
. Но было бы лучше, если бы веб-сервер обрабатывал статические файлы, если можно; он более эффективен, чем запуск PHP, чтобы вытащить файл из двери.
Кроме того, с помощью подхода PHP вам, вероятно, придется установить заголовок Content-Type, соответствующий каждому файлу, что может раздражать. Ваш веб-сервер будет делать это для вас уже при непосредственном обслуживании файлов.
Кроме того, есть другие вещи, которые вы можете получить за «бесплатные» в настоящий момент, которые вам придется рассмотреть – используя ob_gzhandler
если вы хотите сжать ваши страницы, как это уже может быть сделано для статических файлов Apache.
Поэтому, хотя это возможно, и я могу видеть причины, по которым это иногда желательно, я, вероятно, попытаюсь сделать такой вид обработки исключением, а не правилом для файлов, которые обычно не являются динамическими …