😎 » HTML5 » Разная информация » Основні налаштування в .htaccess
460 0  

Основні налаштування в .htaccess

Що і як можна налаштувати в .htaccess am Працює тільки на сервері Apache and Nginx, з увімкнутеим модулем – Mod-Rewrite.

  1. Заборонити кеш
  2. .htaccess для SSI
  3. Приклади налаштувань на GitHub

Задаємо кодування

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 має трьох-крокову систему контроля доступу.

  1. Перший крок обробляє або усі директиви Allow, або усі директиви Deny.
  2. Другий крок обробляє залишившуся директиву (Deny або Allow).
  3. Третій крой приймає усі запити, які не відповідают ні першій, ні другій.
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}

Старый способ разрешить и запретить просмотр:

Order Deny,Allow
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 Більше прикладів редіректів - дивитись тут


Залишити свій коментар:

Досвід у веброзробці:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2009
2023