Вот как каталоги расположены на моем сервере (я унаследовал это и в данный момент не могу изменить):
/var/www/<stuff for the web>
/home/project/src/static/<some CSS, some JavaScript, etc.>
В большой схеме нежелания иметь повторяющиеся файлы в разных каталогах я попытался включить некоторые файлы, подобные этому -
<link rel="stylesheet" href="/home/project/src/static/css/<file>.css" type="text/css" />
<script src="/home/project/src/static/lib/<file>.js" type="text/javascript"></script>
Я получаю ошибку 404 для каждого файла, который я пытался включить таким образом. Я изменил путь к «домашнему» каталогу, пытаясь перейти от /var/www/
к /home/
добавляя ..
до начала строки пути, но без радости.
Затем, убедившись, что mod_alias установлен, я приступил к добавлению директивы псевдонима пути в свой файл конфигурации:
Alias /home/project/src/static/ /home/project/src/static/
<Directory /home/project/src/static/>
Order allow,deny
Allow from all
</Directory>
Перезапустил Apache, но все равно не повезло. Я пробовал это с косой чертой и без нее.
Еще я подтвердил, что open_basedir
не установлен в php.ini, поскольку я понимаю, что его установка может вызвать проблемы при попытке доступа к файлам вне корневого веб-сайта.
Что я могу сделать, чтобы эти файлы можно было найти в корневом веб-каталоге, помимо копирования каталога и помещения его в корневую веб-папку?
Два варианта ... один - просто использовать Псевдоним правильно ... первый путь относительно веб-каталога, как если бы у вас http://yoursite/static
в браузере вы должны использовать:
Alias /static/ /home/project/src/static/
Или, если вам это не нравится и вы предпочитаете решить эту проблему, изменив иерархию файловой системы, используйте привязку монтирования.
mkdir /var/www/static/
А потом в fstab:
/home/project/src/static/ /var/www/static/ bind defaults 0 0
И чтобы применить изменения:
mount -a
или одноразовое крепление:
mount --bind /home/project/src/static/ /var/www/static/
Крепление на привязи - не всегда лучший или самый простой выбор ... могут случиться забавные вещи, например. бегать rm -rf /var/www/*
и ваш /home/project/src/static/*
тоже будут удалены.