БЛОГ


ШПАРГАЛКА ПО .HTACCESS

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

ДЛЯ ЧЕГО НУЖЕН .HTACCESS


.htaccess позволяет создать собственную конфигурацию управлением сервера Апач в директориях или настройках хостинга.
Правила .htaccess распространяются на все директории, где расположен файл, кроме директорий, где расположен собственный .htaccess.
Файл .htaccess считывается сервером Апач при каждом обращении, поэтому все изменения входят в силу сразу, после изменения.
Глобальные настройки сервера Апач могут содержать запрет на исполнение некоторых команд, обычно это вызывает ошибку 500. Также подобную ошибку может вызывать неправильный синтаксис или ошибка, например пропуск пробела.


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


Запрет доступа с IP-адреса 123.123.123.123.
Order Deny,AllowDeny from 123.123.123.123

Если не указывать последние цифры адреса, то запрет будет распространяться на весь диапазон 123.123.123.0 - 123.123.123.255.
Order Deny,AllowDeny from 123.123.123

Разрешаем доступ только с определенных IP-адресов
Order Deny,AllowDeny from allAllow from 123.123.123.123

Принудительное задание кодировки
AddDefaultCharset UTF-8Иногда требуется очистка кэша браузера.


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

Создание собственных страниц с сообщениями об ошибках

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

ErrorDocument 404 http://site.ru/error/404.html

ErrorDocument 403 http:// site ru/error/403.html

ErrorDocument 401 http:// site.ru/error/401.html

ErrorDocument 500 http:// site.ru/error/500.html

Строка ErrorDocument 404 http://site.ru/error/404.html указывает, что при ошибке 404 будет показан файл 404.html, который должен находиться в корне директории сайта. Если файл расположен в другой директории, измените путь к файлу или ссылке.

Редиректы

Редирект на .html

Пример, редирект с c site.ru/blog на site.ru/blog.html

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

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

Пример, редирект с c site.ru/blog/ на site.ru/blog

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]

Склейка доменов.

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

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

Защита от хотлинка

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

Вместо site.ru укажите адрес сайта, jpg|jpeg|png|gif - расширение запрещенных изображений, images.jpg – изображение которое будет показываться, если картинка находится не в корне сайта, укажите полный путь.

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?site.ru [NC]

RewriteRule \.(jpg|jpeg|png|gif)$ images.jpg [NC,R,L]

Защита от брутофорса

Разрешаем доступ к директории administrator только по протоколу HTTP, что отсчет ботов. Для каждой CMS нужно указать свой адрес, например wp-login, wp-admin и так далее

RewriteCond %{REQUEST_URI} ^/administrator\.php$

RewriteCond %{THE_REQUEST} HTTP/1\.0

RewriteRule ^(.*)$ - [F,L]

При модернизации динамического сайта и создании ЧПУ-адресов часто возникает необходимость перенаправить старые страницы с параметрами ID на новые с ЧПУ. Например, чтобы переадресовать страницу вида http://site.com.ua/page.php?id=13 на новую страницу http://site.com.ua/newname.html, используется следующая конструкция:

Редирект со старых статических url на новые

Пример редирект со страницы http://site.com.ru/id=21

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