У меня есть .htaccess, использующий базовую аутентификацию. Кажется, что путь к файлу .htpasswd не относится к файлу htaccess, а к конфигурации сервера.
Поэтому, хотя у меня есть файлы .htaccess и .htpasswd в одном каталоге, это не работает:
AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user
Однако это сработает, если я изменю AuthUserFile на использование абсолютного пути:
AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user
Но я бы предпочел что-то более мобильное, поскольку использую это на нескольких сайтах в разных областях. Я искал в Интернете, но не нашел решения. Можно ли использовать относительный путь или такие переменные, как %{DOCUMENT_ROOT}
?
/var/...
) - и возникает вопрос: «как использовать относительный путь»?На всякий случай люди ищут решение для этого:
источник
req('Host')
, не может ли клиент обмануть это значение?1) Обратите внимание, что наличие
.htpasswd
файла ниже корня сервера считается небезопасным .2) В документах говорится об относительных путях, поэтому похоже, что вам не повезло:
3) Хотя ответы, рекомендующие использовать переменные среды, работают отлично, я бы предпочел поместить заполнитель в
.htaccess
файл или иметь разные версии в моей кодовой базе и настроить все это в процессе развертывания (т.е. заменить заполнители или переименовать / переместите соответствующий файл).В проектах Java я использую Maven для выполнения этого типа работы, например, в проектах PHP, мне нравится иметь сценарий оболочки build.sh и / или install.sh, который настраивает развернутые файлы в соответствии с их средой. Это отделяет вашу кодовую базу от специфики ее целевой среды (то есть ее переменных среды и параметров конфигурации). В общем, приложение должно адаптироваться к среде, если вы сделаете это наоборот, вы можете столкнуться с проблемами, когда среда также должна обслуживать различные приложения или для совершенно несвязанных, специфичных для системы требований.
источник
вы можете поместить свои настройки Auth в Environment. Подобно:
Auth работает, но моя среда не работает.
источник
/Users/...
) - и возникает вопрос: «как использовать относительный путь»?.htpasswd требует полного абсолютного пути от абсолютного корня сервера.
Пожалуйста, получите полный абсолютный путь к файлу с помощью эха
echo $_SERVER['DOCUMENT_ROOT'];
.здесь работает базовый сценарий аутентификации .htaccess.
Перед входом
Afetr Войти
источник
Если вы пытаетесь использовать XAMPP с Windows и хотите использовать файл .htaccess на живом сервере, а также разработать на машине разработки XAMPP, следующее отлично работает!
1) После новой установки XAMPP убедитесь, что Apache установлен как служба.
2) Когда Apache установлен как служба, добавьте новую переменную среды в качестве флага.
3) Запустите Apache
4) Создайте файл .htaccess со следующей информацией ...
Чтобы объяснить приведенный выше сценарий, вот несколько примечаний ...
5) Создайте файл паролей (в данном случае с именем .htpasswd) со следующей информацией ...
Несколько замечаний ...
источник
/home...
) - и возникает вопрос: «как использовать относительный путь»?или если вы разрабатываете на localhost (только для apache 2.4+):
источник
Я знаю, что это старый вопрос, но я просто искал то же самое, и, вероятно, многие другие ищут быстрое мобильное решение. Вот что я наконец придумал:
источник
/var...
) - и возникает вопрос: «как использовать относительный путь»?.htaccess
файла. Если бы вы использовали относительный путь, он бы считался относительноServerRoot
.Возьмем пример.
Ваше приложение находится в / var / www / myApp на каком-то сервере Linux
.htaccess : /var/www/myApp/.htaccess
htpasswdApp : / var / www / myApp / htpasswdApp . (Вы можете использовать любое имя для .htpasswd файла )
Чтобы использовать относительный путь в .htaccess :
Но он будет искать файл в каталоге server_root . Не в document_root .
В нашем случае, когда приложение находится в / var / www / myApp :
document_root есть / вар / WWW / MYAPP
каталог-сервера - это / etc / apache2 // (только в нашем примере из-за того, что мы используем сервер Linux )
Вы можете переопределить его в файле конфигурации apache ( /etc/apache2/apache2.conf ), но я думаю, это плохая идея.
Итак, чтобы использовать относительный путь к файлу в вашем /var/www/myApp/.htaccess, вы должны определить файл пароля в вашем server_root .
Я предпочитаю делать это с помощью следующей команды:
Вы можете скопировать мою команду, использовать жесткую ссылку вместо символа или скопировать файл в свой server_root .
источник