HTML Diff
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 &lt;RequireAll&gt; Require all granted Require not ip 192.168.1.1 &lt;/RequireAll&gt;<p>Выдавать доступ можно не только к сайту целиком, но и к отдельным страницам. Делается это так:</p>
72 &lt;RequireAll&gt; Require all granted Require not ip 192.168.1.1 &lt;/RequireAll&gt;<p>Выдавать доступ можно не только к сайту целиком, но и к отдельным страницам. Делается это так:</p>
73 &lt;Files profile.html&gt; Require all denied Require ip 192.168.1.1 &lt;/Files&gt; &lt;Files store.html&gt; Require all granted Require not ip 192.168.1.1 &lt;/Files&gt;<p>В первом случае мы запретили доступ всем IP-адресам, кроме одного. А во втором случае - разрешили доступ всем, кроме того же IP-адреса.</p>
73 &lt;Files profile.html&gt; Require all denied Require ip 192.168.1.1 &lt;/Files&gt; &lt;Files store.html&gt; Require all granted Require not ip 192.168.1.1 &lt;/Files&gt;<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 &lt;Limit GET POST HEAD&gt; Require all granted &lt;/Limit&gt;<p>Вот какие запросы мы использовали:</p>
80 &lt;Limit GET POST HEAD&gt; Require all granted &lt;/Limit&gt;<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>