2013-09-17 4 views
0

У меня есть сервер разработки и живой сервер. Оба используют тот же .htaccess, но я хочу, чтобы сервер разработки был защищен паролем. Когда я копирую файл .htaccess в live, я получаю 500 ошибок. Предоставляет ли .htaccess какой-то способ только защищать паролем каталоги, используя условные выражения, такие как IF?.htaccess IF каталог существует

, что я использую:

<Directory "/home/my/path/to/development/site/"> 
    AuthName "Restricted Area 52" 
    AuthType Basic 
    AuthUserFile /home/my/path/to/development/site/.htpasswd 
    AuthGroupFile /dev/null 
    require valid-user 
</Directory> 

Может реально использовать некоторую помощь.

+0

Да, это потому, что это его прямая копия. – Err

ответ

2

У вас не может быть контейнеров <Directory> внутри файла htaccess, но вы можете условно включить или отключить HTTP-аутентификацию на основе среды, которая может быть изменена.

Так, например, сказать, ваша продукция сайт http://production.example.com и ваш DEV сайт http://dev.example.com, то вы можете проверить по HTTP хоста и установить переменную окружения:

SetEnvIfNoCase Host ^dev\.example\.com$ require_auth=true 

Или, если путь отличается, скажем ваше производство сайт http://example.com/ и DEV сайт http://example.com/dev/, то вы можете проверить против запрашиваемого URI:

SetEnvIfNoCase Request_URI ^/dev/ require_auth=true 

Там в нескольких других проверках, вы можете сделать это, что указаны в mod_setenvif. В любом случае, вы хотите установить require_auth=true, когда это запрос для dev. Тогда вы настроите ваш материал аутентификации использовать Satisfy Any:

# Auth stuff 
AuthUserFile /home/my/path/to/development/site/.htpasswd 
AuthName "Restricted Area 52" 
AuthType Basic 

# Setup a deny/allow 
Order Deny,Allow 
# Deny from everyone 
Deny from all 
# except if either of these are satisfied 
Satisfy any 
# 1. a valid authenticated user 
Require valid-user 
# or 2. the "require_auth" var is NOT set 
Allow from env=!require_auth 

require_auth Так что, если не установлен, то не требуется авторизация, и ваш SetenvIf должны установить его, если это запрос DEV.

Смежные вопросы