Основні налаштування в .htaccess
Що і як можна налаштувати в .htaccess :am: Працює тільки на сервері Apache and Nginx, з увімкнутеим модулем – Mod-Rewrite.
Задаємо кодування 
AddDefaultCharset UTF-8:bully: Як коментувати в .htaccess? 
Для коментаря потрбно ставити решітку:
#тут ваш коментар
RewriteRule (.+)/$ $1 
або так
RewriteRule (.+)/$ $1 #тут ваш комментарВласні сторінки помилок:
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.phpЗабороняємо перегляд Змісту папки:
#Забороняємо перегляд змісту папки
Options All —IndexesЗаборона на перегляд окремих файлів:
Директива Order, разом з директивою Allow та Deny має трьох-крокову систему контроля доступу.
- Перший крок обробляє або усі директиви Allow, або усі директиви Deny.
- Другий крок обробляє залишившуся директиву (Deny або Allow).
- Третій крой приймає усі запити, які не відповідают ні першій, ні другій.
Order allow,deny      #метод провірки - спочатку дозволені - потім заборонені
Deny from all           #Забороняємо все
<FilesMatch "\.(woff)$|^$">     #Виняток для файлів .woff:
   Order deny,allow   #метод провірки - спочатку заборонені - потім дозволені 
   Allow from all        # дозволено
</FilesMatch># Захист від міжсайтових сценаріїв (XSS), фреймування сторінок і перехоплення вмісту. 
<IfModule mod_headers.c>
	Header set X-XSS-Protection "1; mode=block"
	Header always append X-Frame-Options SAMEORIGIN
	Header set X-Content-Type-Options nosniff
</IfModule>Як створити чорний список IP:
#Чорний список IP адресів
allow from all
deny from 145.186.14.122
deny from 124.15.Найбільш популярні редиректи:
#301 редірект з www на без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
#301 редірект з index.html на головну сторінку
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ https://ardilla-cms.top/ [R=301,L]
#Редірект 301 сторінки з .html на сорінки без .html
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
#Перенаправляємо сторінки  з http://  на https://
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}Старый способ разрешить и запретить просмотр:
Deny from all
* Еще есть поддержка по состоянию на 2022 год
:love: :lol: НОВЫЙ способ запрета и разрешений создается с помощью нового модуля Апаче и дерективы Require - mod_authz_core
Также по использованию Require - хорошая статья
  #Пример РАЗРЕШЕНИЯ доступа всем без ограничений, что аналогично устаревшей Allow from all
Require all granted
  #Пример ЗАПРЕЩЕНИЯ доступа всем, что аналогично устаревшей Deny from all
Require all denied
  # Доступа на основе ЛОГИЧЕСКОГО выражения. Здесь, доступ разрешается для всех клиентов, у которых значение USER_AGENT не содержит фразу 'BadBot':
Require expr %{HTTP_USER_AGENT} != 'BadBot'
  # Синтаксис примера <RequireAll> директивы-тега. Эта групповая директива требует, что бы все, заключенные внутри нее, директивы Require были исполнены, и только в этом случае   <RequireAll> исполниться, и доступ будет предоставлен. В приведенном примере клиентам, приходящим с IP 192.168.48.185 или с домена host.example.com, доступ будет запрещен, а всем остальным доступ будет разрешен.
<RequireAll>
    Require all granted
    Require not ip 192.168.48.185
    Require not host host.example.com
</RequireAll>
  # Синтаксис примера <RequireAny> директивы-тега. Эта групповая директива требует, что бы хотя бы одна из заключенных внутри нее директив Require была исполнена, только в этом случае <RequireAny> исполниться и доступ будет предоставлен. Поэтому внутри <RequireAny>, все последующие директивы Require, следующие после первой исполненной, уже игнорируются. В данном примере доступ будет предоставлен только клиентам, выполнившим запрос методом GET или POST, или только клиентам, прошедшим авторизацию по пользователю и паролю методом заданным директивой AuthType.
<RequireAny>
     Require method GET POST
     Require valid-user
</RequireAny>
Значение символов в .htaccess?
. — точка означает любой символ;
[abc] — перечень символов, совпадающих с буквами a, b, или с;
[^abc] — перечень символов, что не входят в диапазон. Условию соответствует любой символ, кроме a, b, с;
* — предыдущий символ может повторяться 0 и более раз;
[abc]* — найти символы из заданного набора, идущие подряд;
[^abc]* — обратная операция;
.* — замена любого набора символов;
 ".*" — найти все подстроки между кавычками;
^ — обозначает начало строки (при использовании в начале выражения);
$ — конец строки;
\w — буква, цифра или подчёркивание _;
\d — любая цифра;
\D — любой символ, кроме цифр;
[0-9] — указание на любую цифру;
[a-z] — указание на любую букву от a до z с нижним регистром;
[A-Z] — указание на любую букву от A до Z с верхним регистром;
[a-zA-Z] — любая буква от a до Z, регистр не важен;
[a-Z] — то же самое, только короче.
Флаги для доп. опций
NC — NoCase отключает проверку регистра символов при срабатывании правила.
R — Redirect останавливает изменение URL-адреса и возвращает результат. 
L — Last останавливает создание URL-адреса, и строка считается окончательной.Спецсимволы:
    ^ - ограничение слева (начало строки);
    $ - ограничение справа (конец строки);
    . - Точка это любой символ;
    () - переменная (группировка);
    \ - экранирование (символ после \ считается обычным, а не спецсимволом);
    [] - диапазон значений;
    [abc] — перечень символов, совпадающих с буквами a, b, или с.
    [^abc] — перечень символов, не входящих в диапазон. Условию соответствует любой символ, кроме a, b, с.
    * — предыдущий символ может повторяться 0 и более раз.
    [abc]* — найти символы из заданного набора идущие подряд.
    [^abc]* — обратная операция.
    \w — буква, цифра или подчёркивание _.
    \d — любая цифра.
    \D — любой символ, кроме цифр.
    [0-9] — указание на любую цифру.
    [a-z] — указание на любую букву от a до z с нижним регистром.
    [A-Z] — указание на любую букву от A до Z с верхним регистром.
    [a-zA-Z] — любая буква от a до Z, регистр не важен.
    [a-Z] — тоже самое, только короче.
    ! - специальный символ отрицания;Модификаторы:
    ? - символ повторяется 0 или 1 раз;
    + - 1 и более символов (до 65536);
    * - предыдущий символ может повторяться 0 и более символов (до 65536);Флаги для дополнительных опций в правиле
Флаги нужно перечислять только в квадратных скобках через запятую, примеры: [NC] или [R=301,L].
NC — NoCase отключает проверку регистра символов при срабатывании правила.
R — Redirect останавливает изменение URL-адреса и возвращает результат. Самое популярное значение R=301, однако встречаются и другие для временных редиректов (302, MOVED TEMPORARY).
L — Last останавливает создание URL-адреса и строка считается окончательной.Як заборонити Вебархіву архівувати (сканувати) мій сайт?
User-agent: ia_archiver
Disallow: /
User-agent: ia_archiver-web.archive.org
Disallow: /Як заборонити іншим сайтам вставляти картинки із вашого сайту?
# Заборонити іншим сайтам використовувати прямі посилання на ваші зображення
RewriteCond %{HTTP_REFERER} !^$
# Далі список дозволених доменів
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ua.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ua:80.*$ [NC]
# IP сайта (домена)
RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111:80.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
# RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?домен_дружнього сайту.ua [NC]
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
# Формати файлів, для яких встановлюється захист
# Виводить помилку 403
# RewriteRule \.(jpe?g|bmp|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip|pdf|txt|doc|flv|mp3|mp4)$ — [NC,F,L]
# або показує спецмалюнок замість зазначеного
RewriteRule .*\.(jpe?g|bmp|gif|png)$ files/images/nohotlink.jpg [NC,L]RewriteCond обозначаем условие, при совпадении с которым будет выполнено правило RewriteRule. С помощью регулярных выражений задаются шаблоны строк. 
Переменные сервера:%{REQUEST_URI} — часть урла без доменного имени и GET-параметров, например, для страницы, которую вы сейчас читаете: blog/post/4393, 
%{HTTP_HOST} — хост или доменное имя, например: alaev.info 
%{QUERY_STRING} — строка с набором GET параметров, то есть часть урла после знака вопроса (и до решётки якоря, если он есть). 
%{REQUEST_FILENAME} — полный путь в файловой системе сервера к файлу или скрипту соответствующим этому запросу. Чтобы было понятно, адрес скрипта, как нам это привычно такой — alaev.info/index.php, а вот в файловой системе сервера это страшная строка /var/www/alaev_info/data/www/alaev.info/index.php. 
Бывает, делая редирект, вы получаете неожиданный результат, например, хотели в адресе http://site.ru/page-name?post=17434801_4060 убрать параметры post=17434801_4060, указали соответствующие правила (о них ниже будет написано), а в итоге получили строку http://site.ru/usr/local/www/site.ru/www/page-name — от параметров избавились, но получили странный адрес. Это все потому, что вы не указали в начале файла после RewriteEngine On директиву RewriteBase /, которая устанавливает конкретный, базовый URL для преобразований в контексте каталога. 
Метасимволы используются для задания групп символов или «меток» в шаблоне:^ — метка начала строки, 
$ — метка конца строки, 
! – отрицание, 
\ — экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом, 
. – точка, обозначает любой символ, но только один, 
() – группировка. 
Модификаторы ставятся после обычных символов, метасимволов или их групп и расширяют возможности использования шаблонов:? — символ повторяется 0 или 1 раз, 
* — Повторяется от 0 до 65536 раз, 
+ — Повторяется от 1 до 65536 раз. 
Флаги определяют дополнительные опции для данного правила и перечисляются в квадратных скобках через запятую:NC — (nocase) отключает проверку регистра символов. 
R — (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY). С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY). Как вы понимаете, это то самое, что нам и надо. 
L — (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.
:what: Більше прикладів редіректів - дивитись тут