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

.htaccess simple <files> не работает</files>

Сценарий

Я просто пытаюсь разрешить один файл php через папку паролей .htaccess.

Попытки пока

Вопрос

Что мне не хватает? Я знаю, что раньше у меня были такие мелочи, но я просто этого не вижу ...

файл .htaccess

AuthUserFile /some/folder/.htpasswd
AuthType Basic
AuthName "Password Required"
Require user personA personB
Order Deny,Allow
Deny from All


#not working
<Files "./subfolder/my-special-file.php">
    Allow from All
</Files>

Satisfy Any

Веб-страница 401

Неавторизованный

Этот сервер не смог проверить, есть ли у вас право доступа к запрошенному документу. Либо вы ввели неправильные учетные данные (например, неверный пароль), либо ваш браузер не понимает, как предоставить необходимые учетные данные.

Сервер Apache / 2.4.7 (Ubuntu) на порту x.x 80

В Контроль доступа изменился в Apache 2.4, который вы используете, и эти изменения, вероятно, лучше всего объясняются в Обновление до 2.4 с 2.2. Короче из mod_access_compat:

Совместимость: Доступен в Apache HTTP Server 2.3 в качестве модуля совместимости с предыдущими версиями Apache httpd 2.x. Директивы, предоставляемые этим модулем, устарели в результате нового рефакторинга authz. Посмотри пожалуйста mod_authz_host

Давайте реорганизуем вашу конфигурацию на основе mod_authz_core и mod_authz_host:

<Directory "/var/www/somefolder">
    AuthType Basic
    AuthName "Password Required"
    AuthUserFile "/some/folder/.htpasswd"
    Require user personA personB

    <Files "my-special-file.php">
        Require all granted
    </Files>
</Directory>
  • В <Directory> контекст можно заменить на .htaccess, хотя не рекомендуется.
  • В <Files "my-special-file.php"> наследуется всеми вложенными папками, т.е.

    • это позволяет получить доступ к my-special-file.php, subfolder/my-special-file.php и т.п.
    • Если вы хотите, чтобы это применялось только к subfolder/my-special-file.php, вам понадобится:

      <Directory "/var/www/somefolder">
          AuthType Basic
          AuthName "Password Required"
          AuthUserFile "/path/to/.htpasswd"
          Require user personA personB
      
          <Directory "/var/www/somefolder/subfolder">
              <Files "my-special-file.php">
                  Require all granted
              </Files>
          </Directory>
      </Directory>