Proger.by

База знаний Web Developer

Файл .htaccess

Файл .htaccess находится в корневой папке сайта. Если у вас он скрыт, то включите настройку «Показывать скрытые файлы» (картинка ниже справа).

Файл .htaccess 0

Его можно создать самостоятельно в блокноте, либо в любом текстовом редакторе присвоив ему имя .htaccess (без расширения). Если ваш сервер или компьютер не позволяет создать файл с таким именем, создайте файл htaccess.txt, перенесите его на сервер и на сервере переименуйте его в .htaccess.

Простой 301 редирект:

Redirect 301 / https://new-site.by

Рассмотрим поподробнее:
1. «Redirect 301» — инструкция, говорящая о том, что страница перемещена;
2. «/» — указывает на то, что с верхнего уровня сайта (включая подкаталоги) всё будет переадресовано;
3. «https://new-site.by» — новая страница/сайт.

Если нам нужно сделать переадресацию с определенной страницы:

Redirect 301 /old/old.html https://new-site.by/new.html

Переадресуем каталог:

Redirect 301 /old https://new-site.by/new/

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

Order Deny,Allow
Deny from 123.123.123.123

Запрет доступа для диапазонов IP-адресов 123.123.123.0 — 123.123.123.255.

Order Deny,Allow
Deny from 123.123.123

Разрешаем доступ только с определенных IP-адресов:

Order Deny,Allow
Deny from all
Allow from 123.123.123.123

Принудительное задание кодировки (после этого может потребовать очистка кэша):

AddDefaultCharset UTF-8

Отмена перекодировки сервером:

CharsetDisable On

Редирект на .html:
Пример, редирект с c site.by/old на site.by/old.html.

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

Редирект на страницу без слеша в конце адреса:
Пример, редирект с c site.by/old/ на site.by/old.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

Редирект на страницу со слешем в конце адреса:

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

Редирект на страницу без index.php в адресе:

RewriteRule ^index.php/(.*)$ http://mysite.ru/$1 [R=permanent,L]

Редирект на страницу без index.php в конце адреса:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

Редирект с www на без www:

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

Редирект без www на www:

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

Редирект со старых статических url на новые
Пример редирект со страницы https://site.by/id=21.

RewriteCond %{QUERY_STRING} ^id=21$
RewriteRule ^/page.php$ https://site.by/news.html [L,R=301]

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

RewriteCond %{HTTP_HOST} !^site.by$
RewriteRule ^(.*) https://site.by/$1 [R=301,L]

Синтаксис .htaccess

Основные спецсимволы:

  • ^ — начало строки;
  • $ — конец строки;
  • . — любой символ;
  • * — любое количество любых символов;
  • ? — один определенный символ;
  • [0-9] — последовательность символов, например, от 0 до 9;
  • | — символ «или», выбирается или одна группа, или другая;
  • () — иcпользуется для выбора групп символов.

Основные переменные:

  • %{HTTP_USER_AGENT} — поле User-Agent, которое передает браузер пользователя;
  • %{REMOTE_ADDR} — IP адрес пользователя;
  • %{REQUEST_URI} — запрашиваемый URI;
  • %{QUERY_STRING} — параметры запроса после знака ?.

Добавить комментарий

    согласен с соглашением пользователя и даю согласие на обработку персональных данных

    Step 2
    Да
    Нет
    ппп