Защищать паролем только домашнюю страницу

Я пытаюсь защитить только мою домашнюю страницу с помощью Apache Basic Auth.

Кажется, это работает на все, а не только л.с.

<LocationMatch "/">
  AuthType Basic
  AuthName "heelooo?"
  AuthUserFile /var/path/.htpasswd
  Require valid-user
 </LocationMatch>

Изменение регулярного выражения на ^/$ или же ^$ заставляет это ничего не аутентифицировать. Какие-нибудь советы? (работает приложение mod_ruby rails)

2 ответа

Всегда лучше использовать директиву Directory для настройки аутентификации.

Директивы местоположения не должны использоваться для контроля доступа к местоположениям файловой системы

<Directory /home-path>
AuthName Members
AuthType Basic
Require valid-user
AuthUserFile /auth-file-path/.htpasswd
</Directory>

Решение Ruby-on-rails:

before_filter :authenticate

protected

def authenticate
  authenticate_or_request_with_http_basic do |username, password|
    username == "user" && password == "pass"
  end
end

Я повторил все свои попытки, и один решил работать. Я обнаружил, что LocationMatch "^/$" действительно работает. Должно быть, я делал что-то не так раньше. basicauth действительно может работать с mod_ruby - не нужно запускать как fastcgi. Спасибо за помощь.

Другие вопросы по тегам