Не защищать паролем php в Apache

У меня установлен Apache httpd на моем CentOS 7. Добавив следующий код в httpd.conf, я могу защитить паролем свой сайт

<Directory /var/www/html>
  AuthType Basic
  AuthName "Restricted Files"
  AuthBasicProvider file
  AuthUserFile /var/www/password/htpasswd
  Require user validUser

  <Files index.php>
    Require all granted
  </Files>
</Directory>

Поскольку я хочу, чтобы /var/www/html/index.php не был защищен паролем, Require all granted добавляется, как показано. Это, однако, по-прежнему требует от меня имени пользователя и пароля. Пожалуйста, помогите, спасибо ^^


person chunchiu Chan    schedule 24.09.2015    source источник


Ответы (1)


Не защищайте весь каталог, а защищайте с помощью LocationMatch:

<LocationMatch "^/(?!index\.php).|index\.php.+$">
  AuthType Basic
  AuthName "Restricted Files"
  AuthBasicProvider file
  AuthUserFile /var/www/password/htpasswd
  Require user validUser
</LocationMatch>
person Matthias Wimmer    schedule 24.09.2015
comment
Спасибо за ответ, но извините, что это не работает. Поскольку в /var/www/html есть еще несколько частных страниц, я хотел бы разрешить доступ только к index.php без аутентификации. Вот почему я защитил весь каталог. - person chunchiu Chan; 24.09.2015
comment
Да, я это понял. LocationMatch защищает все, кроме /index.php. - person Matthias Wimmer; 24.09.2015
comment
Спасибо друг. Наконец-то я узнаю, что не так. Сейчас я использую WordPress, и все подпапки защищены. Когда я обращаюсь к index.php, происходит доступ к этому защищенному содержимому, поэтому похоже, что index.php также защищен паролем. - person chunchiu Chan; 29.09.2015