Есть файл .htaccess
в корневом каталоге сайта, в котором, среди прочего указаны следующие перенаправления:
RewriteRule ^([a-z]*)\/([1-9][0-9]*\/)?([a-z]*|[1-9][0-9]*\/)*$ index.php?page=$1&id=$2 [NC]
RewriteRule ([^\/]*)\.js$ public/scripts/$1.js [L]
HTML их прекрасно учитывает, то есть скрипты, расположенные в public/scripts/
, подключаются с любой страницы сайта следующим образом:
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="ion.sound.min.js"></script>
<script type="text/javascript" src="illtree.js"></script>
А вот PHP следующий код:
require_once "script.js";
Считает указанием искать файл в той же директории, что и тот, в который производится вставка, ничего там, разумеется, не находя, из-за чего приходится передавать функции абсолютный путь к файлу:
require_once $_SERVER['DOCUMENT_ROOT']."/public/scripts/script.js";
Что не слишком удобно, с точки зрения архитектуры: если я, по каким-то причинам, захочу переместить скрипты в другое место, то столкнусь с необходимостью править пути в нескольких местах, вместо того, чтобы просто обновить файл .htaccess
. Можно ли как-то изменить это поведение, чтобы .htaccess
перенаправлял запросы и от php-скриптов?
PHP обращается к локальным файлам напрямую, а не через сервер, за перенаправление запросов к которому отвечает файл .htaccess
. Однако, начиная с версии PHP 4.3.0 можно запрашивать с помощью функций require
и include
удалённые файлы, передав в качестве параметра url, вот так:
require_once "http://example.com/script.js";
Для работы подобных вызовов необходимо, чтобы такое поведение было разрешено в настройках PHP вашего сервера (параметр allow_url_include
). Однако, следует помнить, что такие правки в конфиге снижают защищённость вашего сервера, поэтому их следует избегать.
Второй способ - включить директории, содержащие файлы для подключения в директиву настроек PHP include_path
, или использовать функцию set_include_path()
, для изменения данной настройки на время выполнения текущего скрипта - например, добавив её в подключаемый ко всем файлам вашего сайта конфиг.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Делаю фильтр, нужно сделать вот такой запрос через QueryTrait
Необходимо нати сумму всех элементов массива, каждый элемент которого равняется числу со значением после точки(float)Через array_sum() не вышло