Как ограничить доступ определенного пользователя в basic auth?

Как настроить базовую авторизацию в Apache для пользователя gameuser таким образом, чтобы он имел доступ только к страницам /game/*, а при попытке доступа к другим страницам пользователь автоматически перенаправлялся на /game?
  • 9 марта 2024 г. 15:08
Ответы на вопрос 1
Для ограничения доступа определенного пользователя в basic auth и настройки доступа только к определенным страницам, можно использовать директиву <Directory> в конфигурационном файле Apache.

Вот пример конфигурации, который позволяет пользователю gameuser иметь доступ только к страницам /game/*:

```
<Directory "/var/www/html/game">
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>

<Directory "/var/www/html">
    Options FollowSymLinks
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/game/.*$
    RewriteRule ^(.*)$ /game [R=301,L]
</Directory>
```

Этот конфигурационный файл устанавливает базовую авторизацию для директории /var/www/html/game, требуя ввода имени пользователя и пароля из файла .htpasswd. Пользователь gameuser будет иметь доступ только к этой директории. 

Далее, в директиве <Directory "/var/www/html"> для всех остальных страниц осуществляется проверка URI. Если URI не начинается с /game/, то происходит автоматическое перенаправление на страницу /game. 

Не забудьте создать файл .htpasswd с учетными данными пользователя gameuser и его пароля:

```sh
htpasswd -c /etc/apache2/.htpasswd gameuser
``` 

После внесения изменений в конфигурационный файл Apache, необходимо перезапустить веб-сервер для их применения:

```sh
sudo systemctl restart apache2
```
Похожие вопросы