Htaccess: различия между версиями
Danil (обсуждение | вклад) (Новая страница: «'''htaccess не работает'''<br> Вы создали в директории с сайтом файл .htaccess, но чтобы вы туда не пи…») |
Danil (обсуждение | вклад) |
||
Строка 34: | Строка 34: | ||
Теперь все директивы в файле .htaccess должны отрабатывать. | Теперь все директивы в файле .htaccess должны отрабатывать. | ||
+ | |||
+ | Если Вы хотите сделать базовую авторизацию на уровне apache - серевера Вам необходимо сгенерировать .htpasswd файл. Действие файлов .htaccess распространяется на текущую директорию и на все поддиректрии, лежащие уровнем ниже. | ||
+ | Данный пароль сгенерирован при помощи htpasswd и подходит для Linux и Windows | ||
+ | Скопируйте эту строку в ваш .htpasswd файл: | ||
+ | |||
+ | admin:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | ||
+ | Помните, только одна запись может быть в строке! | ||
+ | Для ограничения доступа к выбранной директории скопируйте эти строчки в ваш .htaccess файл: | ||
+ | |||
+ | AuthType Basic | ||
+ | AuthName "Thats protected Area!" | ||
+ | AuthUserFile /usr/host/mysite/.htpasswd | ||
+ | Require valid-user | ||
+ | <Files .htpasswd> | ||
+ | deny from all #запрет доступа из браузера к .htpasswd | ||
+ | </Files> | ||
+ | |||
+ | |||
+ | После этого необходимо создать файл .htpasswd, путь до которого мы как раз и указываем в предыдущем файле. Данный файл хранит в себе информацию с именем пользователя и паролем, который прописывается в формате хеша и выглядит примерно так: | ||
+ | |||
+ | '''Создание .htpasswd файла'''<br> | ||
+ | |||
+ | htpasswd -c /var/www/html/.htpasswd admin |
Текущая версия на 13:09, 26 февраля 2019
htaccess не работает
Вы создали в директории с сайтом файл .htaccess, но чтобы вы туда не писали, ни одна директива не работает. Почему?
Скорее всего здесь виновата опция AllowOverride в apache.
Куда же ее вставлять?
Заходим в конфигурационный файл Apache — httpd.conf. В FreeBSD он располагается здесь:
/usr/local/etc/apache/httpd.conf
В других системах расположение другое. Но в целом не так трудно его найти:)
Находим такой блок <Directory «путь до директории с вашим htaccess»>…</Directory>, если нет то создаем его:
<Directory «/usr/local/www/apache22/data/site.ru»> AllowOverride All Order allow,deny Allow from all </Directory>
Если есть, то добавляем либо меняем опцию AllowOverride:
AllowOverride All
/usr/local/www/apache22/data/site.ru — это абсолютный путь до вашей директории, где лежит файл .htaccess
AllowOverride All — здесь сказано что если существует файл .htaccess, то все (All) директивы прописанные в нем выполнять. Кстати если не хотите чтоб сервер читал файл .htaccess то замените «All» на «None».
Allow from all — доступ к папке имеют все.
После того как добавили блок с описанием вашей директории перезапускаем apache.
Теперь все директивы в файле .htaccess должны отрабатывать.
Если Вы хотите сделать базовую авторизацию на уровне apache - серевера Вам необходимо сгенерировать .htpasswd файл. Действие файлов .htaccess распространяется на текущую директорию и на все поддиректрии, лежащие уровнем ниже. Данный пароль сгенерирован при помощи htpasswd и подходит для Linux и Windows Скопируйте эту строку в ваш .htpasswd файл:
admin:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Помните, только одна запись может быть в строке! Для ограничения доступа к выбранной директории скопируйте эти строчки в ваш .htaccess файл:
AuthType Basic AuthName "Thats protected Area!" AuthUserFile /usr/host/mysite/.htpasswd Require valid-user <Files .htpasswd> deny from all #запрет доступа из браузера к .htpasswd </Files>
После этого необходимо создать файл .htpasswd, путь до которого мы как раз и указываем в предыдущем файле. Данный файл хранит в себе информацию с именем пользователя и паролем, который прописывается в формате хеша и выглядит примерно так:
Создание .htpasswd файла
htpasswd -c /var/www/html/.htpasswd admin