Найти в Дзене
Блог Web-Dev

Что такое htaccess? Настройка файла htaccess

Для правильного функционирования сайта вебмастерам надо работать со многими элементами. Одним из этих элементов является htaccess. И в сегодняшней статье «Что такое htaccess? Настройка файла htaccess» мы подробно изучим этот файл. Раньше я не имел представления о его назначении и только недавно сумел впитать кое-какую информацию и сумел разобраться с данным файлом. В этом посте я хочу поделится с вами набранным опытом и рассказать о том, как сделать и настроить файл htaccess, для чего он нужен вашему блогу, какая у него роль в оптимизации и продвижении сайта в системах поиска. Что такое htaccess? Что такое htaccess — хтачесс считается конфигурационным файлом и определяет работу сервера на котором размещается сайт. Правильнее говоря, той небольшой части сервера, отвечающего за деятельность вашего блога. Верное наименование файла ".htaccess" – больше похоже на расширение, а не на название. Если его перевести на русский язык, то оно означает доступ к серверу ( "host" сокращенное "ht" это
Оглавление

Для правильного функционирования сайта вебмастерам надо работать со многими элементами. Одним из этих элементов является htaccess. И в сегодняшней статье «Что такое htaccess? Настройка файла htaccess» мы подробно изучим этот файл.

Раньше я не имел представления о его назначении и только недавно сумел впитать кое-какую информацию и сумел разобраться с данным файлом. В этом посте я хочу поделится с вами набранным опытом и рассказать о том, как сделать и настроить файл htaccess, для чего он нужен вашему блогу, какая у него роль в оптимизации и продвижении сайта в системах поиска.

Что такое htaccess?

Что такое htaccess — хтачесс считается конфигурационным файлом и определяет работу сервера на котором размещается сайт. Правильнее говоря, той небольшой части сервера, отвечающего за деятельность вашего блога. Верное наименование файла ".htaccess" – больше похоже на расширение, а не на название. Если его перевести на русский язык, то оно означает доступ к серверу ( "host" сокращенное "ht" это сервер, а "access" означает доступ ).

Для чего нужен htaccess

Благодаря ему, не перестраивая конфигурацию веб ресурса, можно прописать новые настройки входа на блог, указать разные ограничения или допуск поисковикам и серверам для работы с определенными каталогами, разделами и страницами ресурса.

Все возможности файла htaccess я еще не изучил, но главная его специфика это запретительно-разрешительные правила и перенаправление с одних урлов на другие. Например, ограничить посещение к каталогам или к сайту в целом для некоторых ip адресов или хостов с иными характеристиками.

Создание файла htaccess

У этого файла нет названия, поэтому, его не удастся сделать напрямую. Будем создавать его обходным путем. Сперва открываем любой редактор текста и создаем обычный файл "Тест" с форматом .htaccess (Тест.htaccess).

Затем, в ОС Windows надо зайти в меню «Пуск», далее входим в «Панель управления», и найдя строку «Оформление и персонализация» заходим туда и в ней открываем «Свойства папок» или «Параметры папок», зависит все от версии ОС Windows. В открывшемся окне зайдите во вкладку «Вид» и внизу списка, там где раздел «Скрывать расширения» уберите галочку. В Windows 10 можно через проводник зайти в «Файл» - «Параметры» - «Вид» и так далее.

Теперь загрузив в текстовый редактор ранее созданный файл "Тест" выбираем пункт «Переименовать». В Windows 10 через проводник не получится переименовать, делайте это с помощью блокнота «Тип файла: - Все файлы(*.*)». Убираем полностью имя и оставляем только расширение ".htaccess".

Завершаем создание хтачесс, на очереди его заполнение.

Настройка файла htaccess

Благополучно завершив создание файла, теперь можно приступать к настройке htaccess ради правильного функционирования сайта. Информация будет разбита на последовательные заголовки, чтобы все было понятно.

https-соединение

После приобретения ssl-сертификата необходимо осуществить перенаправление со старого незащищённого соединения (http), чтобы при входе на ваш ресурс посетители знали, что передача данных на нем надежно шифруется и пользоваться вашим сайтом безопасно. Для этого открываем хтачесс и вставляем следующий код:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>

Здесь через теги «<IfModule mod_rewrite.c>» происходит подключение модуля «mod_rewrite.c». Благодаря ему мы можем осуществлять перенаправления.

Есть и другой способ перенаправления на https:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Шпаргалка по htaccess

Небольшая шпаргалка по кодам модуля mod_rewrite и других кодов в htaccess:

  • RewriteEngine – Этой директивой включается (on) или отключается (off) работа кода по преобразованию адресов (урлов).
  • RewriteBase / – С этой командой устанавливается базовый урл-адрес.
  • RewriteCond – Данная команда задает условие по преобразованию.
  • RewriteRule – С помощью этой команды задается правило преобразования, то есть что необходимо сделать в случае, если верхнее условие (RewriteCond) сработало.
  • %{название_переменной} – В директиве модуля mod_rewrite серверная переменная пишется в этом формате.
  • SERVER_NAME – Серверная переменная, в данном случае имя сервера или по другому домен, например: mysite.ru.
  • REQUEST_URI – В этой переменной по сути остальная часть урла и имеет такой вид:
/%D0%A7%D0%95%D0%A0%D0%9D%D0%9E%D0%92%D0%98%D0%9A.php

Частенько используется вместе с SERVER_NAME.

  • SERVER_PORT – Данная переменная содержит название порта.
  • HTTP_HOST – Похож на SERVER_NAME тоже выводит домен.
  • [L] – Этот флаг заканчивает выполнение директивы, если стоящее перед ним условие с правилом выполнено. Флаги используются вместе с квадратными скобками [].
  • [R] – Данный флаг нужен, чтобы преобразования были видны в адресной строке.
  • [NC] – Флаг не учитывающий регистр, например: символы S и s считаются одинаковыми, без этого флага они разные.
  • [R=301] – Флаг для редиректа с кодом 301, можно прописать другой код редиректа, например: 302.
  • [OR] – Означает "ИЛИ", то есть переход к следующему условию, если это не сработало.

Символы регулярного выражения

  • ^ – Этот символ из регулярного выражения означающий начало строки.
  • $ – Противоположность предыдущего символа означающий конец строки.
  • . – Эта точка означает любой одиночный символ.
  • * – Обозначает любое количество символов. Например: (.*) эти два символа точка со звездочкой вместе означают любой одиночный символ с любым количеством этого символа.
  • () – Круглые скобки применяют, чтобы выделить группу символов.
  • ! – Означает "НЕ" (символ отрицания). В картинке выше о ssl с защищенным соединением https можно перевести условие так, если SERVER_PORT "НЕ" 443, то будет работать нижнее правило.
  • \ – Данный символ используется в качестве экранирования служебных символов (* . + \ ? [ ^ ] $ { } = ( ) ! | # : - < >), например:
^www\.mysite\.ru$

Здесь внутри шаблона экранированы две точки, чтобы они считались обычными точками, а не служебными.

Другие команды-коды

  • order deny,allow – Объявляет в какой последовательности будут идти команды по запрещению (deny) и разрешению (allow) доступа.
  • deny from all – Запрещено для (from) всех (all).
  • allow from all – Здесь наоборот вход разрешен для всех.
  • deny from 290.57.47.69 – Запрещен вход конкретному ip.
  • allow from 90.160.170.240 – Разрешен вход по конкретному ip.

Основное зеркало сайта

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

Тут мы пропишем вот этот код (не забудьте поменять mysite.ru на адрес своего сайта):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.mysite\.ru$ [NC]
RewriteRule ^(.*)$ https://mysite.ru/$1 [R=301,L]
</IfModule>

После этого, каждый посетитель, который ввел URL вашего блога с www будет направлен на ресурс без www — редирект 301. Например с «www.mysite.ru» на «mysite.ru».

Убрать хвосты в урл

Если хотите убрать ненужные хвосты в урл, например: index.php. Тогда напишите следующий код:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)/index.php$
RewriteRule ^(.*)$ %1/ [R=301,L]
</IfModule>

После этого все индексные файлы php будут перенаправляться без индексов. Если хотите для html, то вместо формата php напишите html.

Все вместе три верхних кода о ssl с https, урл-адрес без www и убрать хвосты можно прописать следующим образом:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)/index.php$
RewriteRule ^(.*)$ %1/ [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} ^www\.mysite\.ru$ [NC]
RewriteRule ^(.*)$ https://mysite.ru/$1 [R=301,L]
</IfModule>

Не забудьте мой домен изменить на свой.

Redirect 301

Это запасная конфигурация. Пригодится только тогда, когда появится желание поменять адрес странички или перенаправить на иную страницу. Предположим, у вас возникло желание соединить две страницы или удалили контент – проделайте это с тех адресов, у которых хотите убрать постоянный редирект, в итоге не исчезнут ссылки направляющие на них и посетители не попадут на страницу с ошибкой 404, а окажутся на новой странице. Чтобы настроить необходимо написать данный код (не забудьте изменить его указав свой домен):

Redirect 301 /previous_page.php http://mysite.ru/modern.php

Перенаправление можно проводить на разные ресурсы, не обязательно на свой.

Страницы ошибок

Невзирая на то, что некоторые владельцы сайтов все еще используют обычную страницу ошибок, она вряд ли понравится посетителю, так как он будет лицезреть непонятные слова. Надо предложить ему страницу, которая не вызовет у него недоумение и на которой можно прописать из-за чего произошел неудачный запрос (ошибка), и интересную информацию для пользователя. Следующим кодом мы укажем серверу какой файл грузить в случае той или иной ошибки:

ErrorDocument 404 https://mysite.ru/404.php
ErrorDocument 403 https://mysite.ru/403.php
ErrorDocument 500 https://mysite.ru/500.php

Как обеспечить безопасность сайта WordPress

Запрет и лимитирование запросов POST

Очень часто спамеры загружают блог непрерывными попытками разместить разнообразную информацию на различных страницах сайта (в комментариях) или стараются проникнуть в админку, пытаясь ввести разные логины и пароли. В этих случаях можно блокировать эти подозрительные IP или целые подсети для возможности передавать данные на ваш блог запросом POST. Открывать страницы и получать информацию они сумеют благодаря команде GET. Можно сделать полный бан, написав обе команды, смотрите пример. Благодаря этому можно ограничить доступ хакерам из других стран – блокировать целые подсети, где нету вашей целевой публики можно не боясь.

-2

Для блокирования подсети наместо полного IP адреса укажите обрезанный, в частности, полный адрес "149.56.61.61", а подсеть "149.56.".

Как ограничить доступ к файлу

Через htaccess можно ограничить доступ к файлу. В частности, вы можете заблокировать посещение абсолютно любому IP адресу к странице для входа в админку, за исключением своего IP.

-3

Все другие адреса при стремлении войти на страницу wp-login получат ошибку 403. Таким же способом можно обезопасить другие секретные файлы, в частности, wp-config.php или тот же хтачесс .

Где надо установить htaccess

После создания и настройки файла htaccess, его надо установить на сайт/хостинг. Это можно сделать используя FTP клиент или применяя встроенные средства панели на вашем хостинге.

Главное – хтачесс должен быть установлен в корне вашего ресурса, там же, где располагается главный файл "index.php" (или .html). Но если вы хотите сделать запретительные настройки лишь для конкретного каталога, то установите его в соответствующем каталоге.

Ну, на этом, пожалуй всё. Свои вопросы по статье «Что такое htaccess? Настройка файла htaccess» пишите в комментариях.