Файл .htaccess
Файл .htaccess находится в корневой папке сайта. Если у вас он скрыт, то включите настройку «Показывать скрытые файлы» (картинка ниже справа).
Его можно создать самостоятельно в блокноте, либо в любом текстовом редакторе присвоив ему имя .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} — параметры запроса после знака ?.