15+ возможностей .htaccess, о которых вы могли не знать

Содержание
  1. Краткая справка по файлу .htaccess
  2. Где находится файл и как его редактировать
  3. Редактирование готового .htaccess в CMS
  4. Если .htaccess еще не создан
  5. Базовые правила работы с .htaccess: синтаксис
  6. Базовые спецсимволы:
  7. Часто используемые переменные:
  8. Стандартные способы применения .htaccess: редиректы
  9. 1. Постраничный редирект
  10. Как настроить 301 редирект
  11. 2. Редирект на страницу со слешем или без
  12. Редирект на адрес со слешем или наоборот
  13. Если нужен редирект на слеш, используйте такие команды:
  14. На страницу без слеша редирект осуществляется с помощью такого кода:
  15. 3. Настройка главного зеркала
  16. Редирект на HTTPS
  17. Перенаправление с адреса с www на адрес без www
  18. Перенаправление с адреса без www на адрес с www
  19. 4. 301 редирект на другой домен
  20. или
  21. Ускорение работы сайта
  22. 5. Сжатие компонентов сайта с помощью модулей
  23. 6. Управление кэшированием
  24. Настройка отображения сайта
  25. 7. Замена индексного файла
  26. 8. Настройка отображения расширения .html в адресах страниц
  27. 9. Настройка кодировки
  28. 10. Страницы для 4хх ошибок
  29. Как усилить безопасность сайта с помощью .htaccess
  30. 11. Защита изображений от скачивания конкурентами
  31. 12. Ограничение доступа к сайту
  32. Директивы для блокирования User Agents (ботов)
  33. Запрет по IP
  34. Запрет доступа для всех, кроме указанных IP
  35. Запрет доступа для определенных IP
  36. Запрет доступа для подсети
  37. Закрыть доступ к определенному файлу
  38. Блокировка трафика с нежелательных ресурсов
  39. 13. Настройка доступа к файлам или папкам по паролю
  40. Установка пароля для файла
  41. Установка пароля для папки
  42. 14. Защита от внедрения скриптов
  43. 15. Защищаем сайт от DOS-атак
  44. Дополнительные возможности .htaccess
  45. 16. Настройки php
  46. 17. Борьба со спамерами в комментариях на WordPress
  47. 18. Назначение e-mail для администратора сервера
  48. 19. Вывод сообщения о недоступности сайта
  49. Что нужно помнить при работе с .htaccess

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

Краткая справка по файлу .htaccess

Где находится файл и как его редактировать

Базовые правила работы с .htaccess: синтаксис

Базовые спецсимволы

Часто используемые переменные

Стандартные способы применения .htaccess: редиректы

1. Постраничный редирект

2. Редирект на страницу со слешем или без

3. Настройка главного зеркала

4. 301 редирект на другой домен

Ускорение работы сайта

5. Сжатие компонентов сайта с помощью модулей

6. Управление кэшированием

Настройка отображения сайта

7. Замена индексного файла

8. Настройка отображения расширения .html в адресах страниц

9. Настройка кодировки

10. Страницы для 4хх ошибок

Как усилить безопасность сайта с помощью .htaccess

11. Защита изображений от скачивания конкурентами

12. Ограничение доступа к сайту

13. Настройка доступа к файлам или папкам по паролю

14. Защита от внедрения скриптов

15. Защищаем сайт от DOS-атак

Дополнительные возможности .htaccess

16. Настройки php

17. Борьба со спамерами в комментариях на WordPress

18. Назначение e-mail для администратора сервера

19. Вывод сообщения о недоступности сайта

Что нужно помнить при работе с .htaccess

Краткая справка по файлу .htaccess

Файл .htaccess (сокращенное от «hypertext access») используют программисты и оптимизаторы для настройки веб-сервера. В этом файле задают определенные команды, которые указывают серверу, как должен работать сайт.

Файл .htaccess не нужен, если у вас есть доступ к главному конфигурационному файлу сервера (обычно имеет название .httpd.conf, в зависимости от настроек операционной системы может называться по-другому). Изменения в главном файле начинают работать быстрее, а запросы не нагружают сервер.

Но часто бывает так, что у оптимизатора нет доступа к главному файлу и .htaccess все-таки нужен.

В .htaccess можно прописать различные настройки, которые помогут в оптимизации сайта:

  • настроить 301-е редиректы;
  • обеспечить безопасность всего сайта и его отдельных разделов;
  • настроить правила отображения содержимого сайта;
  • ускорить загрузку страниц.

Где находится файл и как его редактировать

Обычно .htaccess помещают в корневую директорию сайта.

Здесь важный момент. От того, где находится файл .htaccess, зависит, на какие разделы сайта влияют его команды.

  • Если .htaccess расположен в корневой директории — прописанные в нем директивы применяются ко всему сайту.
  • Если файл находится в папке каталога — директивы распространяются только на этот каталог и вложенные в него подкаталоги. Для каталога и подкаталогов приоритетными являются команды, прописанные в .htaccess, который находится в директории каталога.

Если вы создаете этот файл самостоятельно, не забудьте точку в начале имени — ведь название фактически представляет собой файловое расширение.

Создать или отредактировать файл .htaccess можно в любом текстовом редакторе.

Редактирование готового .htaccess в CMS

В некоторых CMS файл .htaccess можно найти и редактировать прямо в административной панели. Например, в Битриксе для этого нужно перейти в раздел «Контент» и кликнуть по пункту «Файлы и папки»:

Если ваш сайт работает на WordPress, воспользуйтесь функционалом плагинов Yoast SEO и All in One SEO Pack (их модули позволяют работать с файлом .htaccess).

Если .htaccess еще не создан

Создайте его в текстовом редакторе (пропишите необходимые директивы и сохраните файл с «никаким» именем и расширением .htaccess). Затем разместите его в корневой директории сайта (или в папке каталога, если прописываете локальные директивы).

Система PromoPult — рекламный комплекс для привлечения клиентов из интернета. SEO, PPC, SMM в одном аккаунте. Полная автоматизация, готовые чек-листы, точные настройки. Комплексное решение для малого и среднего бизнеса. Минимальные стартовые бюджеты, полный набор инструментов для всех каналов продвижения, глубокая автоматизация, кампании «под ключ».

Базовые правила работы с .htaccess: синтаксис

Основные правила синтаксиса несложные: каждая команда начинается с новой строки. В файле можно оставлять комментарии (например, чтобы другие оптимизаторы или разработчики понимали, для чего прописана та или иная директива). Чтобы оставить комментарий, необходимо поставить знак #. Все содержимое строки, которое находится после этого знака, сервер не учитывает и не воспринимает как команду.

После сохранения файла изменения вступают в силу сразу. Сервер перезагружать не нужно.

Для указания правил в .htaccess используются регулярные выражения. В них используются специальные символы и переменные. Полную документацию по ним приложим ниже, а пока расшифруем самые популярные.

Базовые спецсимволы:

^ — обозначает начало строки;

$ — конец строки;

. — обозначает любой символ (кроме символа конца строки);

* — любое количество любых символов;

? — один определенный символ;

[0-9] — заменяет любую цифру, [a-z] — любую букву из латинского алфавита;

| — символ «или», выбирается или одна группа, или другая;

() — применяется для выделения групп символов.

Часто используемые переменные:

%{HTTP_USER_AGENT} — содержит информацию о браузере пользователя и операционной системе (поле User-agent, которое передает браузер при обращении к сайту);

%{REMOTE_ADDR} — IP адрес пользователя;

%{REQUEST_URI} — запрашиваемый URI;

%{QUERY_STRING} — параметры запроса после знака ?.

Полный синтаксис и все возможности файла — в официальной документации. Также есть неплохой русскоязычный ресурс о практическом использовании файла.

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

Стандартные способы применения .htaccess: редиректы

Настройка редиректов — самый распространенный способ использования файла .htaccess (об этом мы уже упоминали в начале статьи). Больше о редиректах можно почитать здесь.

При настройке 301 редиректов учитывайте следующее:

  • Убедитесь, что перенаправление действительно нужно. Проверьте, как работает CMS. Например, некоторые CMS по умолчанию перенаправляют пользователей на страницы со слешем. В таком случае дополнительная настройка редиректа не нужна.
  • Следите за тем, чтобы не было двух и больше последовательных перенаправлений. Несколько последовательных редиректов нагружают сервер и страницы загружаются медленнее.
  • Сначала частные редиректы, затем — глобальные. Например, перенаправляйте сначала с одной страницы на другую (частный редирект, к примеру, с удаленной страницы на новую). А затем — общий редирект на страницу со слешем в конце URL.
  • 1. Постраничный редирект

    Есть несколько ситуаций, когда требуются постраничные редиректы:

    • Изменение структуры сайта, при котором у страницы меняется уровень вложенности (например, структура упростилась и страница теперь находится не на третьем уровне вложенности от корневой директории, а на втором).
    • Удаление страницы. Страница уже не нужна, но нужно сохранить трафик, который на нее приходит. Хороший пример для интернет-магазина — когда товар снимается из каталога, логично поставить редирект на товарную категорию.
    • Меняется URL страницы (такого лучше избегать).

    Не очень удачное решение — просто удалить страницу. Поисковые роботы при попытке зайти по проиндексированному URL получат ошибку 404, что не очень хорошо для SEO. Редирект — оптимальный вариант, так как позволяет сохранить и входящий трафик, и позиции в поисковой выдаче.

    Как настроить 301 редирект

    Для этого в файле .htaccess необходимо указать директиву простого перенаправления:

    Redirect 301 /url1/ https://shop.com/url2

    • /url1/ здесь — адрес страницы, с которой мы хотим перенаправлять пользователей. Адрес нужно указывать от корневой директории сайта, без указания протокола и домена. Например, /silovaya-tehnika/generatory-elektrostantsii/benzinovye/.
    • https://shop.com/url2 — адрес страницы, на которую нужно перенаправить посетителей. Здесь уже нужно указывать полный адрес — с протоколом и доменом. Например, https://www.vseinstrumenti.ru/silovaya-tehnika/generatory-elektrostantsii/benzinovye/.

    2. Редирект на страницу со слешем или без

    Чтобы не вводить в заблуждение поисковых роботов, каждая страница сайта должна быть доступна только по одному адресу. Помните, что для роботов адреса https://site.com/catalog и https://site.com/catalog/ — это две страницы, а не одна. Поэтому нужно настроить:

    • редирект на страницы без слеша в конце адреса (или наоборот, в зависимости от того, какой логики вы придерживаетесь в целом по сайту);
    • главное зеркало — указать, какой адрес сайта следует считать основным (например, c www или без www).

    Для устранения дублей с помощью этих настроек нужно воспользоваться модулем mod_rewrite. Здесь уже используются директивы сложного перенаправления. Первой командой необходимо включить модуль преобразования URL:

    RewriteEngine On

    Редирект на адрес со слешем или наоборот

    Существенной разницы здесь нет, выбранная логика зависит от того, какова в целом ситуация по сайту. На новых сайтах, как правило, настраивают перенаправление на страницу со слешем в конце URL. Если сайт работает давно, просто посмотрите, каких страниц в индексе больше.

    Если нужен редирект на слеш, используйте такие команды:

    RewriteCond %{REQUEST_URI} /+[^.]+$
    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

    На страницу без слеша редирект осуществляется с помощью такого кода:

    RewriteCond %{REQUEST_URI} !?
    RewriteCond %{REQUEST_URI} !&
    RewriteCond %{REQUEST_URI} !=
    RewriteCond %{REQUEST_URI} !.
    RewriteCond %{REQUEST_URI} ![^/]$
    RewriteRule ^(.*)/$ /$1 [R=301,L]

    3. Настройка главного зеркала

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

    Редирект на HTTPS

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    При настройке главного зеркала нужно определиться, как указывать адрес: с «www» или без. Есть несколько способов для определения:

    • Добавьте сайт в Яндекс.Вебмастер в двух вариантах — с «www» и без. Яндекс выберет главное зеркало по своему усмотрению и отобразит эту информацию в консоли.
    • Посмотрите на поисковую выдачу. Если в индексе больше страниц вашего сайта с «www» — устанавливайте главное зеркало с «www». Если без — используйте обычный адрес.
    • Если сайт новый — можете смело выбирать любой вариант.

    После того как вы определились с форматом адреса зеркала, укажите нужные директивы в .htaccess. Ниже — два варианта кода:

    Перенаправление с адреса с www на адрес без www

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    Перенаправление с адреса без www на адрес с www

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www..* [NC]
    RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301]

    4. 301 редирект на другой домен

    Чаще всего этот редирект используется при смене домена сайта (переезд на новый домен). Редирект 301 позволяет перенаправить поисковых роботов и пользователей на измененный адрес сайта. Еще его используют для серого SEO, но мы в это углубляться не будем.

    Если ваш сайт переехал на новый домен, укажите в .htaccess один из следующих вариантов кода:

    RewriteEngine On
    RewriteRule ^(.*)$ http://www.mysite2.com/$1 [R=301,L]

    или

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.mysite1.ru$ [NC]
    RewriteRule ^(.*)$ http://www.mysite2.ru/$1 [R=301,L]

    mysite1 и mysite2 в коде — это адрес старого и нового домена, соответственно.

    Ускорение работы сайта

    С помощью команд в .htaccess можно повысить скорость загрузки страниц сайта.

    5. Сжатие компонентов сайта с помощью модулей

    В .htaccess можно включить сжатие при помощи двух модулей — mod_zip и mod_deflate. Они практически идентичны по качеству сжатия.

    У Gzip более гибкий синтаксис, который поддерживает работу с масками:

    <ifModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    </ifModule>

    В mod_deflate необходимо указать типы файлов, которые следует сжать:

    <ifModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
    </ifModule>

    6. Управление кэшированием

    С помощью этих команд сайт будет быстрее загружаться для тех пользователей, которые уже заходили на сайт ранее. Например, при первой загрузке сайта браузеру пользователя нужно загрузить все изображения и скрипты, расположенные на странице. Если включить кэширование, при повторном заходе на сайт браузеру не нужно будет заново скачивать все необходимые ресурсы. Он сможет использовать данные, сохраненные в кэше, что существенно ускоряет загрузку.

    Так выглядят директивы для усиления кэширования:

    FileETag MTime Size
    <ifmodule mod_expires.c>
    <filesmatch «.(jpg|gif|png|css|js)$»>
    ExpiresActive on
    ExpiresDefault «access plus 1 week»
    </filesmatch>
    </ifmodule>

    В нашем примере мы ограничили продолжительность жизни кэша 1 неделей («access plus 1 week»). Вы можете указать любое другое значение и использовать другие единицы измерения, например:

    • месяц (month);
    • год (year);
    • часы (hours).

    То же самое можно указать и с помощью такого кода:

    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType application/javascript «access plus 7 days»
    ExpiresByType text/javascript «access plus 7 days»
    ExpiresByType text/css «access plus 7 days»
    ExpiresByType image/gif «access plus 7 days»
    ExpiresByType image/jpeg «access plus 7 days»
    ExpiresByType image/png «access plus 7 days»
    </IfModule>

    А вот перечень типов файлов, которые можно кэшировать:

    • image/x-icon;
    • image/jpeg;
    • image/png;
    • image/gif;
    • application/x-shockwave-flash;
    • text/css;
    • text/javascript;
    • application/javascript;
    • application/x-javascript;
    • text/html;
    • application/xhtml+xml.

    Настройка отображения сайта

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

    7. Замена индексного файла

    Индексный файл — страница, которая открывается по умолчанию при обращении к определенному каталогу. Вот так этот файл выглядит в каталоге сайта:

    Как правило, такой файл называется index или default, и имеет расширение .html/.php/.htm или другие.

    Допустим, у вас магазин мебели и на сайте есть раздел с офисной мебелью — https://mebel-shop.com/ofisnaya-mebel/. В директории каталога находится файл index.html, но вы хотите, чтобы по умолчанию пользователям загружался файл new.html с товарами-новинками.

    Для этого в каталоге /ofisnaya-mebel/ разместите файл .htaccess и укажите в нем следующую директиву:

    DirectoryIndex new.html

    «new.html» — название файла, который нужно показать вместо дефолтного.

    Также в директиве можно указать несколько файлов. Если первый из них будет недоступен — откроется второй, если недоступен первый и второй — откроется третий, и т.д.

    DirectoryIndex new.html new2.php new3.html

    8. Настройка отображения расширения .html в адресах страниц

    URL-адреса страниц сайта могут отображаться с расширением или без:

    https://site.com/main.html или https://site.com/main

    Отображение расширения не влияет на ранжирование сайта (по крайней мере, нет данных, которые бы это подтверждали). Каждый оптимизатор делает это по своему усмотрению.

    В .htaccess вы можете настроить отображение расширения или убрать его.

    Добавить расширение:

    RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|?)
    RewriteRule .* %1.html [R=301,L]
    RewriteRule ^(.*)/$ /$1.html [R=301,L]

    Убрать расширение:

    RewriteBase /
    RewriteRule (.*).html$ $1 [R=301,L]

    Такие же директивы можно применить для управления показом расширения .php.

    9. Настройка кодировки

    Если кодировка сайта указана неправильно (или не указана вовсе), текст на страницах может отображаться в виде набора непонятных символов. Поэтому всегда указывайте кодировку.

    Обычно ее указывают в метатеге каждой страницы. Если на вашем сайте такого нет, пропишите директиву в .htaccess.

    Чтобы задать файлу кодировку Windows-1251, используйте такой код:

    AddDefaultCharset WINDOWS-1251

    Для того, чтобы все файлы при загрузке на сервер преобразовались в кодировку UTF-8, нужна такая директива:

    CharsetSourceEnc UTF-8

    10. Страницы для 4хх ошибок

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

    В .htaccess можно настроить показ созданных страниц для таких ошибок. Последовательность действий:

  • Подготовьте и сверстайте страницы для ошибок.
  • Создайте для этих страниц папку error в корне сайта и разместите в ней файлы страниц.
  • Пропишите в .htaccess следующие директивы:
  • ErrorDocument 401 /error/401.php
    ErrorDocument 403 /error/403.php
    ErrorDocument 404 /error/404.php
    ErrorDocument 500 /error/500.php

    Как усилить безопасность сайта с помощью .htaccess

    С помощью файла .htaccess можно управлять настройками безопасности сайта. Например:

    • закрыть доступ к определенным файлам (или даже разделам);
    • защитить сайт от кражи контента;
    • обеспечить защиту от DOS-атак;
    • защитить сайт от вредоносных скриптов.

    11. Защита изображений от скачивания конкурентами

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

    Вот, что нужно прописать:

    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^https://(www.)?mysite.com/ [nc]
    RewriteRule .*.(gif|jpg|png)$ https://mysite.com/img/goaway.gif[nc]

    При попытке загрузить любые картинки с расширением gif, jpg или png с вашего сайта конкуренты получат изображение goaway.gif. На нем размещено сообщение о том, что красть чужие картинки — это плохо. Здесь вы можете покреативить и пристыдить конкурентов (изображение появится на ресурсе, на котором планировали использовать ваши картинки), либо просто поставить любое изображение-заглушку. Вместо «mysite.com» укажите адрес вашего сайта.

    12. Ограничение доступа к сайту

    В .htaccess также можно прописать директивы, которые запрещают доступ различным посетителям сайта. Например,

    • можно закрыть доступ определенным IP;
    • закрыть доступ подсетям;
    • заблокировать доступ вредоносным ботам.

    Директивы для блокирования User Agents (ботов)

    SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
    SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
    SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
    SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
    SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
    SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
    SetEnvIfNoCase user-Agent ^Zeus [NC]
    <limit get=»» post=»» head=»»>
    Order Allow,Deny
    Allow from all
    Deny from env=bad_bot
    </limit>

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

    В том числе, в .htaccess вы можете запретить доступ к сайту поисковым роботам. Например, запрет для бота Google будет выглядеть так:

    RewriteEngine on
    RewriteCond %{USER_AGENT} Googlebot
    RewriteRule .* — [F]

    Запрет по IP

    Здесь есть два варианта:

    • открыть доступ только конкретным IP-адресам, а всем остальным запретить;
    • разрешить доступ для всех, а указанным IP — запретить.

    Запрет доступа для всех, кроме указанных IP

    ErrorDocument 403 https://mysite.com
    Order deny,allow
    Deny from all
    Allow from IP1
    Allow from IP2 и т. д.

    «https://mysite.com» здесь — адрес вашего сайта. IP1 и IP2 — места для указания IP-адресов, которым вы хотите открыть доступ к сайту.

    Запрет доступа для определенных IP

    allow from all
    deny from IP1
    deny from IP2 и т. д.

    Запрет доступа для подсети

    allow from all
    deny from 192.168.0.0/24

    После «deny from» впишите маску подсети.

    С помощью этих директив вы можете блокировать IP, с которых на вашем сайте оставляют спамные комментарии. Или IP, с которых поступает слишком много запросов, нагружающих сервер. Вычислить эти адреса вы можете в логах сервера или в сервисах статистики.

    Закрыть доступ к определенному файлу

    <files myfile.html>
    order allow,deny
    deny from all
    </files>

    В первой строке вместо «myfile.html» указываем название файла, к которому хотите запретить доступ. Название файла обязательно указывайте с расширением. При попытке открыть файл пользователь увидит ошибку 403 — «доступ запрещен».

    Ограничение доступа пригодится и в таких случаях:

  • Доступ к самому .htaccess.
  • Если сайт на WordPress — закройте паролем файл wp-config.php (это важно с точки зрения безопасности, так как в этом файле хранится информация о базе данных).
  • Блокировка трафика с нежелательных ресурсов

    Например, вы не хотите, чтобы на ваш сайт попадали посетители с сомнительных ресурсов (с шок-контентом, скажем). Пропишите такую команду:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} bad-site.com [NC,OR]
    RewriteCond %{HTTP_REFERER} bad-site.com [NC,OR]
    RewriteRule .* — [F]
    </ifModule>

    Вместо «bad-site.com» укажите URL-адреса сайтов, с которых не хотите принимать входящий трафик.

    13. Настройка доступа к файлам или папкам по паролю

    К некоторым файлам или директориям с помощью .htaccess можно ограничить доступ — защитить их паролем. Для этого нужно проделать два действия.

    1. Создайте файл с паролями

    Создайте файл .htpasswd, укажите в нем логины и пароли в таком формате:

    user:password

    Где «user» — это логин пользователя, а «password» — соответствующий пароль.

    Разместите файл с паролями в корневой директории сайта.

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

    2. Пропишите директивы в .htaccess

    Укажите, какие именно файлы или папки нужно защитить паролем.

    Установка пароля для файла

    <files secure.php=»»>
    AuthType Basic
    AuthName «»
    AuthUserFile /pub/home/.htpasswd
    Require valid-user
    </files>

    Установка пароля для папки

    resides
    AuthType basic
    AuthName «This directory is protected»
    AuthUserFile /pub/home/.htpasswd
    AuthGroupFile /dev/null
    Require valid-user

    «/pub/home/.htpasswd» — расположение нашего файла с логинами и паролями. Укажите путь к своему файлу от корня. После установки пароля проверьте, корректно ли выполняются все директивы.

    14. Защита от внедрения скриптов

    Хакеры могут использовать ваш сайт в своих целях с помощью скриптовых инъекций — внедрения фрагмента кода, который будет выполняться на вашем сайте.

    В .htaccess мы можем настроить защиту от подобных атак. Для этого необходимо прописать следующие директивы:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
    RewriteRule ^(.*)$ index.php [F,L]

    При попытке выполнить любой скрипт на вашем ресурсе злоумышленник получит ответ сервера 403 — «доступ запрещен».

    15. Защищаем сайт от DOS-атак

    Организовать защиту от DOS-атак можно разными способами. Один из них — установить лимит на максимальный размер запроса. По умолчанию на сервере такого ограничения нет, поэтому нужно прописать его в .htaccess.

    Например, ограничить размер загружаемых файлов в байтах:

    LimitRequestBody 10240000

    В этой директиве указано ограничение на файлы больше 10 Мбайт.

    Если хотите защититься более основательно — изучите директивы LimitRequestFields, LimitRequestFieldSize и LimitRequestLine в официальной документации.

    Дополнительные возможности .htaccess

    16. Настройки php

    Эти настройки нужны программистам, если по каким-то причинам нет доступа к файлу php.ini.

    Рассмотрим для примера выражения php_value — позволяет устанавливать максимальный объем данных, загружаемых на сайт и максимальное время обработки скриптов. Это важные настройки, так как напрямую влияют на производительность сайта.

    <ifModule mod_php.c>
    php_value upload_max_filesize 125M
    php_value post_max_size 20M
    php_value max_execution_time 60
    </ifModule>

    В строке «upload_max_filesize» указываете максимальный размер загружаемых файлов в мегабайтах, «post_max_size» означает максимальный объем постинга, «max_execution_time» указывает время в секундах на обработку скриптов.

    17. Борьба со спамерами в комментариях на WordPress

    Чтобы избавиться от спамных комментариев, закройте доступ к файлу wp-comments-post.php. Сделать это можно с помощью таких команд:

    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REQUEST_URI} .wp-comments-post.php*
    RewriteCond %{HTTP_REFERER} !.*mysite.com.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^$
    RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

    Вместо «mysite.com» впишите адрес вашего сайта.

    18. Назначение e-mail для администратора сервера

    С помощью этого кода можно назначить адрес электронной почты администратора:

    ServerSignature EMail
    SetEnv SERVER_ADMIN admin@mysite.com

    Все уведомления о важных событиях на сервере будут приходить на этот адрес.

    19. Вывод сообщения о недоступности сайта

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

    Такие команды перенаправят пользователя на страницу с информацией о недоступности сайта:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/info.html$
    RewriteCond %{REMOTE_HOST} !^12.345.678.90
    RewriteRule $ https://mysite.ru/info.html [R=302,L]

    В строке «RewriteCond %{REMOTE_HOST} !^12.345.678.90» замените IP-адрес на адрес своего сервера. А в строке «RewriteRule $ https://mysite.ru/info.html [R=302,L]» замените адрес https://mysite.ru/info.html на адрес страницы с информацией о недоступности сайта.

    Что нужно помнить при работе с .htaccess

    • Перед любыми изменениями файла делайте бэкап (резервную копию). Если обновление директив приведет к каким-то ошибкам или неполадкам на сайте, вы сможете быстро вернуть все как было.
    • Директивы в файле .htaccess, размещенном в корневой директории сайта, распространяются на все каталоги и подкаталоги. Если вы размещаете дополнительные файлы .htaccess в каталогах, указывайте в них только новые директивы — то есть те правила, которые нужно применить только к конкретному каталогу. Остальные правила унаследуются от .htaccess, расположенного уровнем выше (в родительском каталоге или в корне сайта).
    • Если нужно прописать сразу несколько разных директив, не указывайте их все сразу. Добавляйте их по одной, обновляйте файл и проверяйте, корректно ли работает команда. Если все хорошо, переходите к следующей и т.д. Так вы сможете избежать ошибок и проще будет разобраться, что сделано не так.
    • Обратите внимание! В командах файла .htaccess нельзя использовать кириллицу. Если нужно указать адрес кириллического домена (сайт.рф), используйте метод punycode (для этого воспользуйтесь любым whois-сервисом). Например, адрес «сайт.рф» будет выглядеть как «xn--80aswg.xn--p1ai/$1».
    • При появлении ошибки 500 проверьте синтаксис директивы — иногда причиной ошибки может быть банальная опечатка. Также файл .htaccess можно проверить на наличие ошибок с помощью онлайн-сервисов. Например, этого. Если ошибок в файле нет, а 500 ошибка все равно появляется, скорее всего, такой тип команды запрещен в главном конфигурационном файле веб-сервера. Тут уже потребуется помощь программиста и провайдера хостинга.
    • Указывайте в .htaccess только для тех настроек, которые нельзя установить с помощью других методов. Если в .htaccess будет слишком много команд, это может снизить работоспособность сайта.
    • Пользуйтесь генератором .htaccess, если не хотите изучать синтаксис самостоятельно.

    Источник: blog.promopult.ru

    Оцените статью
    Добавить комментарий