Есть файл .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(), для изменения данной настройки на время выполнения текущего скрипта - например, добавив её в подключаемый ко всем файлам вашего сайта конфиг.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей