настройка htaccess

Что такое файл .htaccess и как его создать вы узнали на соседней странице. А вот основные функции как то разбросались по всему сайту, вот здесь и попробуем их объединить. Опишем здесь основные и наиболее востребованные для новичков сайтостроения настройки htaccess.

настройка файла htaccess

Еще раз повторюсь для невнимательных читателей: главная настройка — это что бы файл htaccess был в unix формате:) Меняется формат в блокноте, инструкция на соседней странице. Иначе будете ловить ошибку 500, возможно и без ошибки, но файл не будет выполнять свои функции.

Теперь по порядку основные настройки (вместо адреса сайта-примера прописываете свой)

404 htaccess

Посетитель набравший несушествующий адрес на вашем сайте будет перенаправляться на главную.

ErrorDocument 404 http://www.www.instructing.ru

(таким же образом можно прописать и другие ответы сервера)

htaccess rewriterule

Чаще всего используется для включения ЧПУ в адресах страниц сайта.

RewriteEngine On — всего одна маленькая строчка, после которой идут различные инструкции, для примера разберем определение основного домена, для того, что бы собрать в одну кучу наши показатели ТИЦ и PR.

(подобных конструкций в rewriterule может быть множество, но прописывать каждый раз RewriteEngine On совсем необязательно, достаточно «одной таблетки» :))

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.instructing.ru

RewriteRule (.*) http://www.www.instructing.ru/$1 [R=301,L]

в данном случае основным был назначен домен с www. Таким же макаром можно обрезать ненужный хвост

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.www.instructing.ru

RewriteRule (.*) http://www.instructing.ru/$1 [R=301,L]

htaccess редирект

редирект со cтарого адреса страницы на новый(в случае, если поменялся адрес страницы. Например был http://www.www.instructing.ru/1.ps.html, а стал http://www.www.instructing.ru/seoreg/1ps.html )

Redirect 301 /1ps.html http://www.instructi.ru/seoreg/1ps.html

в случае наоборот: был http://www.www.instructing.ru/seoreg/1ps.html, стал http://www.www.instructing.ru/1.ps.html

Redirect 301 /seoreg/1ps.html http://www.www.instructing.ru/1.ps.html

htaccess 301

В предыдущем пункте мы использовали 301 редирект, когда страница перемещена на совсем. так же можно использовать вместо Redirect 301 — RedirectPermanent

Например когда ваш сайт переехал на другой домен

Redirect Permanent / http://www.новый_домен.ru

htaccess 302

Теперь рассмотрим временное изменение адреса страницы или домена. Используем вышеуказанные способы, только вместо 301 или Permanent прописываем 302 или temp. Например:

Redirect 302 / http://www.новый_домен.ru

htaccess php

Если вы хотите, что бы файлы с расширением html и  htm обрабатывались сервером как php

RemoveHandler .html .htm

AddType application/x-httpd-php .php .htm .html .phtml

скачивание файлов RAR

что бы ваши посетители могли скачивать у вас файлы с расширением RAR не в виде кракозябров, а обычным архивом используя браузер или менеджер закачек

AddType «application/x-rar-compressed» .rar

антилич

используется для того, что бы файлы с указанными в настройках htaccess расширениями отдавались только посетителям вашего сайта. Т.е. если кто то где то оставил ссылку на картинку или скачивание файла с вашего сайта, то перешедший по ней юзер увидит 404 страницу или главную. Данная конструкция использует проверку поля реферер.

#/антилич на скачивание exe, rar, zip, png, jpg (можно еще прописать расширения в скобках нижней строчки)

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^http://(www.)?www.instructing.ru/.*.(php).*$ [NC]

RewriteRule .*\.(exe|rar|zip|png|jpg)$ http://www.instructing.ru/fail_url.php [R,NC]

таким образом скачать файл или увидеть картинку можно будет только предварительно зайдя на ваш сайт. Остальные отправляются на страницу fail_url.php. Дело в том, что такой вариант антилича блокирует доступ к изображениям и нужным роботам: яндекс картинки, гугл картинки и пр.

Другой вариант антилича:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?instructing\.ru [NC]
RewriteCond %{HTTP_REFERER} !yandex\.ru [NC]
RewriteCond %{HTTP_REFERER} !google\.ru [NC]
RewriteCond %{HTTP_REFERER} !yandex\.com [NC]
RewriteCond %{HTTP_REFERER} !Googlebot/2.1; [NC]
RewriteCond %{HTTP_REFERER} !feedburner\.com [NC]
RewriteCond %{HTTP_REFERER} !mail\.ru [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?poisk\.ru/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?rambler\.ru/.*$ [NC]
RewriteCond %{HTTP_REFERER} !nigma\.ru [NC]
RewriteCond %{HTTP_REFERER} !bing\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yahoo\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?babylon\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !webalta\.ru [NC]
RewriteCond %{HTTP_REFERER} !^Googlebot-Image/.* [NC]
RewriteRule \.(jpe?g|png|flv)$ http://www\.instructing\.ru/instr\.gif [L]

Где указано разрешение доступа к изображениям и видео ботам, с систем которых я получаю трафик. Остальные, в том числе и боты без юзерагента, получают изображение instr.gif

запрет доступа к сайту

А вот так мы можем запретить доступ к своему ресурсу юзеру пришедшему с определенного сайта.

RewriteCond %{HTTP_REFERER} http://нехороший сайт

RewriteRule .* /error.html [L] (отсылаем куда подальше)

htaccess кеширование

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

#/включение кеширования картинок скриптов стилей, в скобках указываем файлы с каким расширением будем кешировать

FileETag MTime Size

<ifmodule mod_expires.c>

<filesmatch «.(jpg|gif|png|css|js)$»>

ExpiresActive on

ExpiresDefault «access plus 1 year»

</filesmatch>

</ifmodule>

Браузер, получив ответ от сервера, что станица не изменилась, будет брать информацию из кеша, то же самое произойдет при загрузке последующих страниц сайта. Скрипты, стили будут грузиться из кеша, что облегчит посетителю дорогу к вашим страницам. Время кеширования изменяйте в пятой строчке 1 year — 1 год, 2 month -2 месяца и т.д.

образец htaccess

Теперь посмотрим пример готового файла .htaccess. Данные настройки htaccess были прописаны на этом сайте до переезда на cms. Строчки закомментированные решеткой # вырезать.

#/перенаправление с 404 на главную

ErrorDocument 404 http://www.www.instructing.ru/

#/обработка html htm как php

RemoveHandler .html .htm

AddType application/x-httpd-php .php .htm .html .phtml

#/корректная обработка файла rar

AddType «application/x-rar-compressed» .rar

RewriteEngine On #/включение modrewrite

RewriteCond %{HTTP_HOST} ^www.instructing.ru #/основной домен

RewriteRule (.*) http://www.www.instructing.ru/$1 [R=301,L]

#/антилич

RewriteCond %{HTTP_REFERER} !^http://(www.)?www.instructing.ru/.*.(html).*$ [NC]

RewriteRule .*\.(exe|rar|zip|jpg|png)$ http://www.instructing.ru/fail_url.html [R,NC]

#/кеширование

FileETag MTime Size

<ifmodule mod_expires.c>

<filesmatch «.(jpg|gif|png|css|js)$»>

ExpiresActive on

ExpiresDefault «access plus 1 year»

</filesmatch>

</ifmodule>

И не забудте изменить адрес сайта 🙂

кодировка сайта в htaccess

AddDefaultCharset UTF-8       #явно указываем кодировку вашего сайта

или

AddDefaultCharset windows-1251

защита от ботов htaccess

Таким образом мы можем запретить доступ к сайту нежелательным ботам, некоторым парсерам и посетителям с пустым юзерагентом. Бывает что и поисковики, в частности яндекс, заходят на сайт без юзерагента видимо для проверки на клоакинг, но в большинстве случев это различные парсеры и грабберы контента. Блокируем их.

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

RedirectMatch (timthumb)\.php$ /.htaccess                                           #некоторые недохакеры до сих пор пытаются использовать бывшую уязвимость wordpress и создают бестолковыми атаками большую нагрузку

SetEnvIfNoCase User-Agent ^-?$ search_bot                                          #без юзерагента
SetEnvIfNoCase User-Agent «Phantom» search_bot
SetEnvIfNoCase User-Agent «^SolomonoBot» search_bot                  #есть такой полезный сервис solomono 
SetEnvIfNoCase User-Agent «^News» search_bot
SetEnvIfNoCase User-Agent «Ezooms» search_bot
SetEnvIfNoCase User-Agent «MJ12bot» search_bot
SetEnvIfNoCase User-Agent «^fastbot» search_bot
SetEnvIfNoCase User-Agent «^TurnitinBot» search_bot
SetEnvIfNoCase User-Agent «Parser» search_bot
SetEnvIfNoCase User-Agent «Python» search_bot
SetEnvIfNoCase User-Agent «Linux» search_bot              #запрет всем посетителям с линукса, очень часто парсеры работают именно на линуксе
SetEnvIfNoCase User-Agent «xpymep» search_bot
SetEnvIfNoCase User-Agent «Butterfly» search_bot
SetEnvIfNoCase User-Agent «WBSearchBot» search_bot
SetEnvIfNoCase User-Agent «infobot» search_bot
SetEnvIfNoCase User-Agent «Indy» search_bot
SetEnvIfNoCase User-Agent «^Moreoverbot» search_bot
SetEnvIfNoCase User-Agent «Baiduspider» search_bot                        #самая китайская поисковая система, а нужен ли ваш сайт в китае?
SetEnvIfNoCase User-Agent «WebMoney» search_bot                        #иногда этот вебманевский бот листает страницы абсолютно без паузы и сильно грузит сервак
SetEnvIfNoCase User-Agent «^magpie-crawler» search_bot
SetEnvIfNoCase User-Agent «^InternetSeer» search_bot
SetEnvIfNoCase User-Agent «^DLE_Spider» search_bot
SetEnvIfNoCase User-Agent «^Yeti» search_bot
SetEnvIfNoCase User-Agent «^start» search_bot
SetEnvIfNoCase User-Agent «^SeznamBot» search_bot
SetEnvIfNoCase User-Agent «libcurl» search_bot
SetEnvIfNoCase User-Agent «^Java» search_bot
SetEnvIfNoCase User-Agent «^MLBot» search_bot
SetEnvIfNoCase User-Agent «AcoonBot» search_bot
SetEnvIfNoCase User-Agent «^findlinks» search_bot
SetEnvIfNoCase User-Agent «Lightspeedsystems» search_bot
SetEnvIfNoCase User-Agent «Q» search_bot
SetEnvIfNoCase User-Agent «DigExt» search_bot
SetEnvIfNoCase User-Agent «Exabot» search_bot
SetEnvIfNoCase User-Agent «SearchBot» search_bot

<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=search_bot
</Limit>

<files wp-login.php>  #запрет доступа к файлу wp-login со всех ip кроме ваших (используется для защиты wordpress)
order deny,allow
deny from all
allow from 81.181        #пишем ваши подсети или ip адреса
allow from 42.241
allow from 39.811
</Files>