0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>22 сен 2023</li>
2
<ul><li>22 сен 2023</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Помогаем серверу Apache подобрать редиректы и управлять правами пользователей.</p>
4
</ul><p>Помогаем серверу Apache подобрать редиректы и управлять правами пользователей.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
6
<p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
7
<p>Веб-сервер - посредник между пользователем и сайтом - или, точнее, данными на нём. Человек отправляет запрос на сервер, чтобы получить содержимое нужной страницы. А сервер обрабатывает эти запросы, находит соответствующие файлы и возвращает их. И этот процесс повторяется до тех пор, пока человек не закроет страницу.</p>
7
<p>Веб-сервер - посредник между пользователем и сайтом - или, точнее, данными на нём. Человек отправляет запрос на сервер, чтобы получить содержимое нужной страницы. А сервер обрабатывает эти запросы, находит соответствующие файлы и возвращает их. И этот процесс повторяется до тех пор, пока человек не закроет страницу.</p>
8
<p>Но иногда данные - например, пароли или доступ к админ-панели - пользователю по запросу отдавать не следует. Поэтому для безопасности на сервере определяют права доступа, которым тот строго следует. Один из способов определить права доступа - создать файл<strong>.htaccess</strong>. О нём сегодня и поговорим.</p>
8
<p>Но иногда данные - например, пароли или доступ к админ-панели - пользователю по запросу отдавать не следует. Поэтому для безопасности на сервере определяют права доступа, которым тот строго следует. Один из способов определить права доступа - создать файл<strong>.htaccess</strong>. О нём сегодня и поговорим.</p>
9
<p>Вы узнаете:</p>
9
<p>Вы узнаете:</p>
10
<ul><li><a>что такое .htaccess</a>;</li>
10
<ul><li><a>что такое .htaccess</a>;</li>
11
<li><a>зачем он нужен</a>;</li>
11
<li><a>зачем он нужен</a>;</li>
12
<li><a>где находится и как его редактировать</a><a>;</a></li>
12
<li><a>где находится и как его редактировать</a><a>;</a></li>
13
<li><a>как настроить .htaccess</a>;</li>
13
<li><a>как настроить .htaccess</a>;</li>
14
<li><a>что запомнить</a>.</li>
14
<li><a>что запомнить</a>.</li>
15
</ul><p>? Если хотите узнать больше о том, как работают веб-серверы, советуем прочитать другую<a>нашу статью</a>.</p>
15
</ul><p>? Если хотите узнать больше о том, как работают веб-серверы, советуем прочитать другую<a>нашу статью</a>.</p>
16
<p><strong>.htaccess</strong> - это файл конфигурации веб-сервера Apache. Он нужен, чтобы менять его настройки - например, перенаправлять пользователя на другие страницы сайта или запрещать доступ к отдельным папкам.</p>
16
<p><strong>.htaccess</strong> - это файл конфигурации веб-сервера Apache. Он нужен, чтобы менять его настройки - например, перенаправлять пользователя на другие страницы сайта или запрещать доступ к отдельным папкам.</p>
17
<p>Вообще, для глобальных конфигураций у Apache есть специальный файл -<strong>httpd.conf</strong>. В нём можно установить правила обработки запросов и запуска модулей Apache, определив то, какие они должны принимать параметры и что должны возвращать в ответ. Другими словами, httpd.conf контролирует всё, что происходит с сервером.</p>
17
<p>Вообще, для глобальных конфигураций у Apache есть специальный файл -<strong>httpd.conf</strong>. В нём можно установить правила обработки запросов и запуска модулей Apache, определив то, какие они должны принимать параметры и что должны возвращать в ответ. Другими словами, httpd.conf контролирует всё, что происходит с сервером.</p>
18
<p>Но этот файл слишком сложный для простых разработчиков - для управления им нужно быть матёрым системщиком. Если неправильно указать настройки, то сервер не будет работать и пользователи не смогут зайти на сайт. Поэтому создатели Apache придумали другой способ менять конфигурацию сервера, не боясь его критической поломки, - с помощью файлов .htaccess.</p>
18
<p>Но этот файл слишком сложный для простых разработчиков - для управления им нужно быть матёрым системщиком. Если неправильно указать настройки, то сервер не будет работать и пользователи не смогут зайти на сайт. Поэтому создатели Apache придумали другой способ менять конфигурацию сервера, не боясь его критической поломки, - с помощью файлов .htaccess.</p>
19
<p>.htaccess можно создать в любой папке на сервере. Его правила будут распространяться на всё, что находится внутри этой директории: файлы и подпапки, то есть действовать локально. Новые правила временно перепишут глобальные настройки из httpd.conf и будут действовать только там, где создан файл.</p>
19
<p>.htaccess можно создать в любой папке на сервере. Его правила будут распространяться на всё, что находится внутри этой директории: файлы и подпапки, то есть действовать локально. Новые правила временно перепишут глобальные настройки из httpd.conf и будут действовать только там, где создан файл.</p>
20
<p>Если в папке уже есть файл .htaccess, но нам нужно создать ещё один во вложенной папке, то приоритет настроек поменяется. Новые конфигурации заменят правила, которые заданы на уровень выше - в первом .htaccess-файле.</p>
20
<p>Если в папке уже есть файл .htaccess, но нам нужно создать ещё один во вложенной папке, то приоритет настроек поменяется. Новые конфигурации заменят правила, которые заданы на уровень выше - в первом .htaccess-файле.</p>
21
<p>Разберём это наглядно:</p>
21
<p>Разберём это наглядно:</p>
22
Иерархия файлов с конфигурациями: в самом верху базовые настройки сервера, а по ступенькам ниже идут локальные настройки для отдельных папок<em>Изображение: Skillbox Media</em><p>Для каждого уровня - свои настройки из файла .htaccess. Например, в папке<strong>Server</strong>мы можем указать, что доступ к вложенной папке<strong>Frontend</strong>есть только у фронтендеров, а к <strong>Backend</strong> - только у бэкендеров. Теперь в соответствующие папки смогут попасть пользователи только с определёнными логинами. Внутри этих папок можно задать другие локальные настройки. При этом главный файл httpd.conf останется без изменений и сервер точно будет работать.</p>
22
Иерархия файлов с конфигурациями: в самом верху базовые настройки сервера, а по ступенькам ниже идут локальные настройки для отдельных папок<em>Изображение: Skillbox Media</em><p>Для каждого уровня - свои настройки из файла .htaccess. Например, в папке<strong>Server</strong>мы можем указать, что доступ к вложенной папке<strong>Frontend</strong>есть только у фронтендеров, а к <strong>Backend</strong> - только у бэкендеров. Теперь в соответствующие папки смогут попасть пользователи только с определёнными логинами. Внутри этих папок можно задать другие локальные настройки. При этом главный файл httpd.conf останется без изменений и сервер точно будет работать.</p>
23
<p>Чаще всего файл .htaccess используют, если нужно:</p>
23
<p>Чаще всего файл .htaccess используют, если нужно:</p>
24
<ul><li>настроить редирект;</li>
24
<ul><li>настроить редирект;</li>
25
<li>выдать и определить права для пользователей;</li>
25
<li>выдать и определить права для пользователей;</li>
26
<li>указать последовательность действий в случае ошибок на сервере.</li>
26
<li>указать последовательность действий в случае ошибок на сервере.</li>
27
</ul><p>Поговорим о каждом случае подробнее.</p>
27
</ul><p>Поговорим о каждом случае подробнее.</p>
28
<p><strong>?</strong><strong>Редирект.</strong>Используется для перенаправления пользователей с одной страницы на другую. Представьте, что у нас есть главная страница сайта -<strong>index.html</strong>. Но её пришлось переделать, и появилась новая -<strong>new_index.html</strong>.</p>
28
<p><strong>?</strong><strong>Редирект.</strong>Используется для перенаправления пользователей с одной страницы на другую. Представьте, что у нас есть главная страница сайта -<strong>index.html</strong>. Но её пришлось переделать, и появилась новая -<strong>new_index.html</strong>.</p>
29
<p>Пока страница находится в стадии тестирования, мы хотим показывать её только половине пользователей, чтобы проверить функциональность и их удовлетворённость изменениями. Поэтому нам нужно сделать так, чтобы, когда человек заходит на страницу<strong>index.html</strong>, его перенаправляло на <strong>new_index.html</strong>. Указать это можно как раз в файле .htaccess.</p>
29
<p>Пока страница находится в стадии тестирования, мы хотим показывать её только половине пользователей, чтобы проверить функциональность и их удовлетворённость изменениями. Поэтому нам нужно сделать так, чтобы, когда человек заходит на страницу<strong>index.html</strong>, его перенаправляло на <strong>new_index.html</strong>. Указать это можно как раз в файле .htaccess.</p>
30
<p><strong>?</strong><strong>Доступы.</strong>С помощью .htaccess можно ограничить доступ к отдельным папкам или файлам, блокировать пользователей по IP-адресам и добавлять на страницы сайта авторизацию через логин и пароль.</p>
30
<p><strong>?</strong><strong>Доступы.</strong>С помощью .htaccess можно ограничить доступ к отдельным папкам или файлам, блокировать пользователей по IP-адресам и добавлять на страницы сайта авторизацию через логин и пароль.</p>
31
<p>На новую страницу сайта можно добавить авторизацию. Даже если пользователи как-то узнают, что мы разрабатываем новую версию главной страницы, то их попросят ввести логин и пароль, который знаем только мы и другая выборка пользователей.</p>
31
<p>На новую страницу сайта можно добавить авторизацию. Даже если пользователи как-то узнают, что мы разрабатываем новую версию главной страницы, то их попросят ввести логин и пароль, который знаем только мы и другая выборка пользователей.</p>
32
<p><strong>?</strong><strong>Ошибки.</strong>Чтобы сервер работал корректно, ему нужно указать, что делать во время возникновения ошибок - например, ошибки 404. Для этого в файле .htaccess есть специальные настройки.</p>
32
<p><strong>?</strong><strong>Ошибки.</strong>Чтобы сервер работал корректно, ему нужно указать, что делать во время возникновения ошибок - например, ошибки 404. Для этого в файле .htaccess есть специальные настройки.</p>
33
<p>Представьте, что пользователь заходит на страницу, которой вообще нет, - например, на <strong>free_money.html</strong>. Браузер по умолчанию выдаст ему дефолтную страницу с ошибкой 404: "Запрашиваемая страница не найдена". Но мы можем перенастроить это - и указать, чтобы сервер перенаправлял пользователя на главную страницу или на нашу собственную страницу с сообщением об ошибке 404 и полезной информацией.</p>
33
<p>Представьте, что пользователь заходит на страницу, которой вообще нет, - например, на <strong>free_money.html</strong>. Браузер по умолчанию выдаст ему дефолтную страницу с ошибкой 404: "Запрашиваемая страница не найдена". Но мы можем перенастроить это - и указать, чтобы сервер перенаправлял пользователя на главную страницу или на нашу собственную страницу с сообщением об ошибке 404 и полезной информацией.</p>
34
<p>? Это не все возможности файла .htaccess - их ещё много. Весь список конфигураций можно найти на <a>официальном сайте Apache</a>.</p>
34
<p>? Это не все возможности файла .htaccess - их ещё много. Весь список конфигураций можно найти на <a>официальном сайте Apache</a>.</p>
35
<p>Для начала узнаем, как найти .htaccess. Сделать это просто - нужно зайти в корневую папку сервера и включить показ скрытых файлов. Чтобы сделать это на Windows, читайте<a>официальное руководство</a>, а в редакторах кода обычно ничего делать не нужно - файлы видны и так:</p>
35
<p>Для начала узнаем, как найти .htaccess. Сделать это просто - нужно зайти в корневую папку сервера и включить показ скрытых файлов. Чтобы сделать это на Windows, читайте<a>официальное руководство</a>, а в редакторах кода обычно ничего делать не нужно - файлы видны и так:</p>
36
Файл обычно находится в папке public или в общей папке сервера<em>Кадр: "<a>Веб-программист. Дмитрий Ченгаев</a>" / YouTube</em><p>Если файла .htaccess нет, значит, его нужно создать самостоятельно. Для этого в корневой папке сервера создайте файл с названием .htaccess. Он будет пустой, но так и нужно.</p>
36
Файл обычно находится в папке public или в общей папке сервера<em>Кадр: "<a>Веб-программист. Дмитрий Ченгаев</a>" / YouTube</em><p>Если файла .htaccess нет, значит, его нужно создать самостоятельно. Для этого в корневой папке сервера создайте файл с названием .htaccess. Он будет пустой, но так и нужно.</p>
37
<p>Теперь всё готово. Теперь мы можем указывать собственные настройки для сервера. Поэтому откроем файл и начнём его редактировать.</p>
37
<p>Теперь всё готово. Теперь мы можем указывать собственные настройки для сервера. Поэтому откроем файл и начнём его редактировать.</p>
38
<p><strong>Важно!</strong>Не открывайте .htaccess с помощью "Блокнота", если используете Windows. Так в файл запишутся дополнительные символы, которые сервер Apache может обработать неправильно. Лучше всего редактировать файл через консоль или<a>Notepad++</a>.</p>
38
<p><strong>Важно!</strong>Не открывайте .htaccess с помощью "Блокнота", если используете Windows. Так в файл запишутся дополнительные символы, которые сервер Apache может обработать неправильно. Лучше всего редактировать файл через консоль или<a>Notepad++</a>.</p>
39
<p>Дальше в статье мы разберём основные настройки для .htaccess. Будем писать всё с нуля, но если вам нужен "универсальный" файл с конфигурациями, то скопируйте содержимое этого<a>файла</a>в ваш .htaccess.</p>
39
<p>Дальше в статье мы разберём основные настройки для .htaccess. Будем писать всё с нуля, но если вам нужен "универсальный" файл с конфигурациями, то скопируйте содержимое этого<a>файла</a>в ваш .htaccess.</p>
40
<p>Посмотрим, как работать с .htaccess-файлом и настраивать сервер для своих нужд. Вот список всего, что мы разберём ниже:</p>
40
<p>Посмотрим, как работать с .htaccess-файлом и настраивать сервер для своих нужд. Вот список всего, что мы разберём ниже:</p>
41
<ul><li><a>главная страница по умолчанию</a>;</li>
41
<ul><li><a>главная страница по умолчанию</a>;</li>
42
<li><a>редиректы</a>;</li>
42
<li><a>редиректы</a>;</li>
43
<li><a>замена протокола HTTP на HTTPS</a>;</li>
43
<li><a>замена протокола HTTP на HTTPS</a>;</li>
44
<li><a>замена адреса с указателем WWW на адрес без него</a>;</li>
44
<li><a>замена адреса с указателем WWW на адрес без него</a>;</li>
45
<li><a>ограничение доступов</a>;</li>
45
<li><a>ограничение доступов</a>;</li>
46
<li><a>базовая аутентификация</a>;</li>
46
<li><a>базовая аутентификация</a>;</li>
47
<li><a>ограничение запросов</a>;</li>
47
<li><a>ограничение запросов</a>;</li>
48
<li><a>страницы ошибок</a>;</li>
48
<li><a>страницы ошибок</a>;</li>
49
<li><a>кодировка</a>.</li>
49
<li><a>кодировка</a>.</li>
50
</ul><p>Это самые популярные настройки. Можете найти нужные, скопировать, но поменять адрес сайта и названия страниц. Всё должно работать.</p>
50
</ul><p>Это самые популярные настройки. Можете найти нужные, скопировать, но поменять адрес сайта и названия страниц. Всё должно работать.</p>
51
<p>Вспомним пример: мы хотим заменить старую главную страницу сайта на новую -<strong>new_index.html</strong>. Запишем это в .htaccess:</p>
51
<p>Вспомним пример: мы хотим заменить старую главную страницу сайта на новую -<strong>new_index.html</strong>. Запишем это в .htaccess:</p>
52
DirectoryIndex new_index.html<p>Эта команда будет перенаправлять всех пользователей со страницы<strong>index.html</strong>на страницу<strong>new_index.html</strong>. Видите, как всё просто.</p>
52
DirectoryIndex new_index.html<p>Эта команда будет перенаправлять всех пользователей со страницы<strong>index.html</strong>на страницу<strong>new_index.html</strong>. Видите, как всё просто.</p>
53
<p>Ещё можно указать несколько страниц для редиректа - если одна из них не загрузится. Давайте сделаем так: перенаправим пользователя на новую страницу, а если она вдруг не загрузится, то покажем старую главную страницу - index.html:</p>
53
<p>Ещё можно указать несколько страниц для редиректа - если одна из них не загрузится. Давайте сделаем так: перенаправим пользователя на новую страницу, а если она вдруг не загрузится, то покажем старую главную страницу - index.html:</p>
54
DirectoryIndex new_index.html index.html<p>Список можно продолжить любым количеством страниц через пробелы.</p>
54
DirectoryIndex new_index.html index.html<p>Список можно продолжить любым количеством страниц через пробелы.</p>
55
<p>Теперь давайте разберёмся с перенаправлением пользователей с одной страницы на другую. Процесс похож на замену главной страницы - только с немного другой конфигурацией.</p>
55
<p>Теперь давайте разберёмся с перенаправлением пользователей с одной страницы на другую. Процесс похож на замену главной страницы - только с немного другой конфигурацией.</p>
56
<p>Напишем редирект, который будет переводить со страницы<strong>profile.html</strong>на <strong>my.html</strong>. Представьте, что это какая-то социальная сеть, где профиль пользователя переехал в новый интерфейс:</p>
56
<p>Напишем редирект, который будет переводить со страницы<strong>profile.html</strong>на <strong>my.html</strong>. Представьте, что это какая-то социальная сеть, где профиль пользователя переехал в новый интерфейс:</p>
57
RewriteEngine On RewriteRule ^profile/(.*)$ my.html [L]<p>Разберём всё по порядку:</p>
57
RewriteEngine On RewriteRule ^profile/(.*)$ my.html [L]<p>Разберём всё по порядку:</p>
58
<ul><li>RewriteEngine On - это функция, которая включена по умолчанию на большинстве современных веб-серверов, включая Apache. Она позволяет выполнить дополнительные действия при обработке URL-адресов: например, проанализировать эти адреса, чтобы найти нужные символы.</li>
58
<ul><li>RewriteEngine On - это функция, которая включена по умолчанию на большинстве современных веб-серверов, включая Apache. Она позволяет выполнить дополнительные действия при обработке URL-адресов: например, проанализировать эти адреса, чтобы найти нужные символы.</li>
59
<li>RewriteRule - это команда, которая устанавливает перенаправление с URL-адреса<strong>profile.html</strong>на URL-адрес<strong>my.html</strong>.</li>
59
<li>RewriteRule - это команда, которая устанавливает перенаправление с URL-адреса<strong>profile.html</strong>на URL-адрес<strong>my.html</strong>.</li>
60
</ul><p>Заметьте, что во второй строке мы использовали регулярные выражения. Если коротко, это набор правил и шаблонов для поиска или замены подстрок в тексте. Нам они нужны, чтобы выделить все URL-адреса, в которых есть слово "profile".</p>
60
</ul><p>Заметьте, что во второй строке мы использовали регулярные выражения. Если коротко, это набор правил и шаблонов для поиска или замены подстрок в тексте. Нам они нужны, чтобы выделить все URL-адреса, в которых есть слово "profile".</p>
61
<p>Бывают ситуации, когда сайт сначала поставили на протокол HTTP, а потом владельцы решили перейти на <a>HTTPS</a>. Сделали они это для шифрования и безопасной передачи данных между пользователем и сервером.</p>
61
<p>Бывают ситуации, когда сайт сначала поставили на протокол HTTP, а потом владельцы решили перейти на <a>HTTPS</a>. Сделали они это для шифрования и безопасной передачи данных между пользователем и сервером.</p>
62
<p>Но некоторые пользователи уже могли привыкнуть к старому адресу сайта - поэтому их нужно перенаправить на новый адрес. Для этого пишем такую команду:</p>
62
<p>Но некоторые пользователи уже могли привыкнуть к старому адресу сайта - поэтому их нужно перенаправить на новый адрес. Для этого пишем такую команду:</p>
63
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<p>Разбираемся в каждой строке:</p>
63
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<p>Разбираемся в каждой строке:</p>
64
<ul><li>RewriteCond %{HTTPS} off - сначала проверяем, что находится на сайте без HTTPS. Если значение равно off, то выполняется следующая команда.</li>
64
<ul><li>RewriteCond %{HTTPS} off - сначала проверяем, что находится на сайте без HTTPS. Если значение равно off, то выполняется следующая команда.</li>
65
<li>RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - указываем, что нужно перенаправить все URL-адреса, соответствующие определённому шаблону, на нужный протокол: https://%{HTTP_HOST}%{REQUEST_URI}. Это означает, что если сервер получает запрос на URL-адрес<strong>http</strong>://example.com/, то он должен перенаправить его на конечную точку<strong>https</strong>://example.com/.</li>
65
<li>RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - указываем, что нужно перенаправить все URL-адреса, соответствующие определённому шаблону, на нужный протокол: https://%{HTTP_HOST}%{REQUEST_URI}. Это означает, что если сервер получает запрос на URL-адрес<strong>http</strong>://example.com/, то он должен перенаправить его на конечную точку<strong>https</strong>://example.com/.</li>
66
</ul><p>На один и тот же сайт можно зайти по разным ссылкам - например, www.skillbox.ru или skillbox.ru. Все они одинаково корректны в плане синтаксиса, но для поисковых роботов это разные страницы, что неправильно. Для решения проблемы нужно переводить пользователя на какую-то одну страницу, и чаще всего на ту, где меньше всего символов: skillbox.ru.</p>
66
</ul><p>На один и тот же сайт можно зайти по разным ссылкам - например, www.skillbox.ru или skillbox.ru. Все они одинаково корректны в плане синтаксиса, но для поисковых роботов это разные страницы, что неправильно. Для решения проблемы нужно переводить пользователя на какую-то одну страницу, и чаще всего на ту, где меньше всего символов: skillbox.ru.</p>
67
<p>Чтобы убрать лишние символы, используем следующие команды:</p>
67
<p>Чтобы убрать лишние символы, используем следующие команды:</p>
68
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.site.com [NC] RewriteRule ^(.*)$ http://site.com/$1 [L,R=301,NC]<p>Эта настройка уберёт WWW из URL-адреса. Если нам зачем-то нужно сделать обратное - добавить WWW в начало адреса, - немного меняем команды:</p>
68
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.site.com [NC] RewriteRule ^(.*)$ http://site.com/$1 [L,R=301,NC]<p>Эта настройка уберёт WWW из URL-адреса. Если нам зачем-то нужно сделать обратное - добавить WWW в начало адреса, - немного меняем команды:</p>
69
RewriteEngine on RewriteCond %{HTTP_HOST} ^site.com [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [L,R=301,NC]<p>Для Apache есть две команды ограничения доступа к сайту - Order Allow,Deny и Require. В новых версиях веб-сервера, начиная с 2.4, желательно использовать вторую.</p>
69
RewriteEngine on RewriteCond %{HTTP_HOST} ^site.com [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [L,R=301,NC]<p>Для Apache есть две команды ограничения доступа к сайту - Order Allow,Deny и Require. В новых версиях веб-сервера, начиная с 2.4, желательно использовать вторую.</p>
70
<p>С помощью этих команд можно пускать на сайт людей только с определённым IP-адресом:</p>
70
<p>С помощью этих команд можно пускать на сайт людей только с определённым IP-адресом:</p>
71
Require ip 192.168.1.1 Require ip 192.168.0.2<p>Чтобы, наоборот, запретить конкретным пользователям посещать сайт, можно заблокировать их IP-адреса:</p>
71
Require ip 192.168.1.1 Require ip 192.168.0.2<p>Чтобы, наоборот, запретить конкретным пользователям посещать сайт, можно заблокировать их IP-адреса:</p>
72
<RequireAll> Require all granted Require not ip 192.168.1.1 </RequireAll><p>Выдавать доступ можно не только к сайту целиком, но и к отдельным страницам. Делается это так:</p>
72
<RequireAll> Require all granted Require not ip 192.168.1.1 </RequireAll><p>Выдавать доступ можно не только к сайту целиком, но и к отдельным страницам. Делается это так:</p>
73
<Files profile.html> Require all denied Require ip 192.168.1.1 </Files> <Files store.html> Require all granted Require not ip 192.168.1.1 </Files><p>В первом случае мы запретили доступ всем IP-адресам, кроме одного. А во втором случае - разрешили доступ всем, кроме того же IP-адреса.</p>
73
<Files profile.html> Require all denied Require ip 192.168.1.1 </Files> <Files store.html> Require all granted Require not ip 192.168.1.1 </Files><p>В первом случае мы запретили доступ всем IP-адресам, кроме одного. А во втором случае - разрешили доступ всем, кроме того же IP-адреса.</p>
74
<p>Чтобы сделать сайт или отдельные страницы доступными только после аутентификации - ввода логина и пароля, нужно вписать следующие команды:</p>
74
<p>Чтобы сделать сайт или отдельные страницы доступными только после аутентификации - ввода логина и пароля, нужно вписать следующие команды:</p>
75
AuthName "Authentication Folder" AuthUserFile /path/.htpasswd AuthType Basic require valid-user<p>Здесь мы используем базовую SSH-аутентификацию. Для неё нужна защищённая паролем папка Authentication Folder (назвать можно по-другому), а также файл<strong>.htpasswd</strong>. Дальше следует указать, что доступ есть только у авторизованных пользователей.</p>
75
AuthName "Authentication Folder" AuthUserFile /path/.htpasswd AuthType Basic require valid-user<p>Здесь мы используем базовую SSH-аутентификацию. Для неё нужна защищённая паролем папка Authentication Folder (назвать можно по-другому), а также файл<strong>.htpasswd</strong>. Дальше следует указать, что доступ есть только у авторизованных пользователей.</p>
76
<p>Если у вас ещё не настроен SSH, нужно ввести следующую команду в командной строке в корневой папке сервера:</p>
76
<p>Если у вас ещё не настроен SSH, нужно ввести следующую команду в командной строке в корневой папке сервера:</p>
77
htpasswd -bc ~/.htpasswd логин пароль<p>Вместо "логин" и "пароль" введите свои логин и пароль. После выполнения команды у вас появится файл<strong>.htpasswd</strong>.</p>
77
htpasswd -bc ~/.htpasswd логин пароль<p>Вместо "логин" и "пароль" введите свои логин и пароль. После выполнения команды у вас появится файл<strong>.htpasswd</strong>.</p>
78
<p>Мы можем разрешать или запрещать определённые виды<a>HTTP-запросов</a>. Например, иногда нужно запретить пользователям загружать файлы на сервер, но сохранить доступ к их скачиванию.</p>
78
<p>Мы можем разрешать или запрещать определённые виды<a>HTTP-запросов</a>. Например, иногда нужно запретить пользователям загружать файлы на сервер, но сохранить доступ к их скачиванию.</p>
79
<p>Рассмотрим на примере запросов GET, POST и HEAD:</p>
79
<p>Рассмотрим на примере запросов GET, POST и HEAD:</p>
80
<Limit GET POST HEAD> Require all granted </Limit><p>Вот какие запросы мы использовали:</p>
80
<Limit GET POST HEAD> Require all granted </Limit><p>Вот какие запросы мы использовали:</p>
81
<ul><li>GET - запрос на получение данных с сервера;</li>
81
<ul><li>GET - запрос на получение данных с сервера;</li>
82
<li>POST - запрос на отправку данных на сервер;</li>
82
<li>POST - запрос на отправку данных на сервер;</li>
83
<li>HEAD - запрос на отправку только заголовков; например, чтобы проверить доступность сервера.</li>
83
<li>HEAD - запрос на отправку только заголовков; например, чтобы проверить доступность сервера.</li>
84
</ul><p>Здесь мы выбираем запросы с помощью команды Limit и разрешаем только их.</p>
84
</ul><p>Здесь мы выбираем запросы с помощью команды Limit и разрешаем только их.</p>
85
<p>Когда на сайте возникает ошибка - например, 404 или "страница не найдена", - мы можем перенаправить пользователя на созданную нами страницу с описанием этой ошибки. Представьте, что мы сделали отдельную страницу<strong>404.html</strong>:</p>
85
<p>Когда на сайте возникает ошибка - например, 404 или "страница не найдена", - мы можем перенаправить пользователя на созданную нами страницу с описанием этой ошибки. Представьте, что мы сделали отдельную страницу<strong>404.html</strong>:</p>
86
ErrorDocument 404 /404.html<p>Всё просто. Главное - чтобы страница находилась в той же папке, где лежит файл .htaccess.</p>
86
ErrorDocument 404 /404.html<p>Всё просто. Главное - чтобы страница находилась в той же папке, где лежит файл .htaccess.</p>
87
<p>Чтобы указать кодировку для всего сайта, нужно ввести следующую команду:</p>
87
<p>Чтобы указать кодировку для всего сайта, нужно ввести следующую команду:</p>
88
AddDefaultCharset utf-8<p>Здесь мы указали, что кодировка по умолчанию должна быть UTF-8.</p>
88
AddDefaultCharset utf-8<p>Здесь мы указали, что кодировка по умолчанию должна быть UTF-8.</p>
89
<p>Давайте резюмируем всё, что узнали о файле<strong>.htaccess</strong>и его использовании:</p>
89
<p>Давайте резюмируем всё, что узнали о файле<strong>.htaccess</strong>и его использовании:</p>
90
<ul><li>Файл нужен, чтобы задавать конфигурацию для веб-серверов Apache.</li>
90
<ul><li>Файл нужен, чтобы задавать конфигурацию для веб-серверов Apache.</li>
91
<li>Обычно с помощью .htaccess настраивают редирект, выдают права доступа и задают алгоритм действий для сервера в случае возникновения ошибок.</li>
91
<li>Обычно с помощью .htaccess настраивают редирект, выдают права доступа и задают алгоритм действий для сервера в случае возникновения ошибок.</li>
92
<li>Выглядит он как обычный текстовый файл, но в нём содержится код с уникальным синтаксисом.</li>
92
<li>Выглядит он как обычный текстовый файл, но в нём содержится код с уникальным синтаксисом.</li>
93
<li>Чтобы редактировать .htaccess, используйте консоль или редактор Notepad++.</li>
93
<li>Чтобы редактировать .htaccess, используйте консоль или редактор Notepad++.</li>
94
</ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
94
</ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>