Назад | Перейти на главную страницу

Htaccess auth на основе информации о сервере, а не о клиенте

В текущем проекте у нас есть отдельная разработка и производство. Код на обоих находится в одном репозитории SVN.

Проблема заключается в доступе к среде разработки извне. Допустим, у нас есть два отдельных сервера для prod и dev:

1.2.3.4 -> production
5.6.7.8 -> development

Идея состоит в том, чтобы использовать один и тот же .htaccess с Auth на обоих серверах, но поведение должно быть таким:

Это должно быть примерно так (псевдокод):

IF $SERVER_IP == 5.6.7.8 THEN
    require_auth
ELSE 
    do_not_require_auth

Мы пытаемся достичь этого с помощью минимально возможного количества дополнительных модулей, но, к сожалению, мы не смогли найти никакой информации о том, как выполнить условие в .htaccess, на основе информации о сервере.

Это вообще возможно?

вы должны добавить их в свои директивы аутентификации / авторизации .htaccess.

setenvif Server_Addr=1.2.3.4 okpublic
allow from env=okpublic
require valid-user
satisfy any

если адрес сервера - 1.2.3.4, мы устанавливаем переменную среды, которую мы будем использовать во второй строке, чтобы разрешить доступ любому. если адрес сервера не 1.2.3.4, то пользователи должны пройти аутентификацию. если любое из этих 2 правил выполнено, то доступ предоставляется.

то, что я сделал, странно, ну да ладно, если это то, что ты хочешь :)

другое решение, гораздо более простое, - игнорировать файл .htaccess при обновлении svn на производственном сервере, используя svn propedit svn: ignore. если вам нужен другой файл .htaccess для prod и dev, то, возможно, вы захотите изучить ветвление, слияние и т. д., или, может быть, многоцелевой файл .htaccess просто лучше. Мне тоже хотелось упомянуть элементы управления svn.