Что такое .htaccess? Примеры и возможности!

Опубликовано: 05.10.2014 | 785

Что такое .htaccess? Примеры использования!

Всем привет. На линии Александр Васильев. Сегодня я хотел бы поделиться информацией об очень интересном файле, который лежит в «сердце» каждого сайта и который просто необходим под различные настройки. Это файл .htaccess, который позволяет нам производить самые различные настройки в плане безопасности и прочих полезных фишечек.

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

Содержание:
1. Что такое .htaccess?
2. Примеры использования.

Информации по настройкам этого файла в сети предостаточно, включая официальный сайт Apache, но всё же я постараюсь сделать пост интересным и полезным.

Наш горячо-любимый wordpress уже наделён множеством фишек, и часто, не нуждается в этих кодах. Но, вдруг, может кому-нибудь пригодится эта информация для общего развития!

Что такое .htaccess? Для чего он нужен?

Начнём с того, что данный файл является распределённым конфигурационным файлом сервера Apache. На каждом сайте имеется такой файл. С его помощью можно делать довольно много различных настроек, которые выполняют различные функции по перенаправлениям, защите папок паролями, различным запретам и инструкциям и ещё много других возможностей.

Данный файл является очень мощным инструментом, который нужно уметь использовать. К тому же он является скрытым и доступен только для выполнения непосредственно на сервере.

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

Возможности в примерах

Итак, приступим. Вашему вниманию предоставляется первый пример. Рассмотрим, как можно перенаправить на собственные страницы ошибок.

ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/serverr.html

Данный код позволяет перенаправлять, при возникновении ошибок, на свои собственные страницы. Нам нужно создать свои страницы и прописать путь к ним в строках /errors/имя страницы. Для того, чтобы было немного понятнее что писать в этих страницах, расскажу об этих ошибках.

Ошибка 400 говорит о том, что это плохой запрос.

Ошибка 401 может появиться, если требуется авторизация.

403 ошибка вызывается, если какая-либо часть Вашего блога запрещена для выполнения, либо защищена паролем.

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

500 ошибка описывается как внутренняя ошибка сервера. Это говорит нам о том, что на нашем сервере что-то не в порядке, и он не может работать как прежде. Как правило такая ошибка выскакивает, когда хостинг-провайдер выполняет какие-либо работы на серверах.

Блокировка транслирования Ваших файлов на других сайтах. Допустим, у Вас есть раскрученный блог. Информация актуальна и посещаемость на высоте. Вы сделали оптимизацию, но всё-равно идёт нагрузка. В чём дело? Иногда нехорошие «редиски» транслируют Ваши картинки на своём сайте. Этим самым они делают нагрузку на Ваш хостинг, что сказывается только негативно. Так вот, чтобы избежать этого, вставим в .htaccess следующий код.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?Ваш сайт\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /Путь к картинке.jpg [L]

После этого, если этот жулик вставит отображение картинки на своём сайте с Вашего сервера, будет выскакивать одна и та же картинка, путь к которой нужно прописать в последней строчке. Картинку можете сделать какую угодно. Например, написав в ней «аяяй», ну или на что хватит фантазии… Также замените адрес Вашего блога в первой строчке кода.

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

RewriteEngine on
Redirect 301 /old-page http://site.ru/new-page

Во второй строчке укажите адрес старой страницы и новой. Такой редирект используется ещё в исключении дублей страниц. Об этом я писал в статье «Оптимизация WordPress».

Склейка домена. Данная функция позволяет Вам установить главный адрес сайта с www или без него. Поисковые системы очень бурно реагируют, когда сайт доступен по двум адресам. Чтобы сделать такую склейку, пропишите следующий код.

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

Здесь главным адресом будет адрес без приставки www. Если Вы хотите, чтобы главным адресом было www.site.ru, просто поменяйте местами последние две строчки.

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

Order Allow,Deny
Allow from all
Deny from 192.168.0.1

Обычно такой запрет делают, если у Вас завёлся какой-либо спамер или человек, который пытается взломать Ваш блог.

Запрещаем просмотр с определённых браузеров. Данная функция пригодится Вам, если Вы хотите запретить, например, просмотр Вашего сайта с IE, в котором всё отображается криво. Или, например, запретить доступ определённой программы, как правило для спама, которая шерстит по Вашему блогу с определённой нехорошей целью. Следующий код, позволяет сделать это.

SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
Order Allow,Deny
Allow from all
Deny from env=bad_bot

Полный список user-agent Вы можете посмотреть здесь.

Запрет доступа к определённым файлам. Данная функция обезопасит Ваш блог. Запретите все файлы, в которых имеются данные, такие как логин и пароль, имя баз данных и пр. Сервер всё равно будет иметь доступ к этим файлам, а вот вне сервера доступ будет запрещён для всех!

<Files wp-config.php>
order allow,deny
deny from all
</Files>
<Files .htaccess>
order allow,deny
deny from all
</Files>

В данном примере мы запретили доступ к файлам wp-config.php и .htaccess.

Скачивание определённых файлов. Эта возможность позволит нам скачивать файлы, а не открывать их непосредственно в браузере. Возможно, у Вас была ситуация, когда Вы хотите скачать какой-нибудь ролик или pdf-документ, а он, вместо начала закачки, открывается в браузере. Так вот, чтобы такого не происходило, пропишите следующий код.

AddType application/octet-stream .pdf
AddType application/octet-stream .avi
AddType application/octet-stream .mp4
AddType application/octet-stream .mp3

Данный список Вы можете дополнить по своему усмотрению.

Включение gzip-сжатия. Даная функция нам не нужна, так как мы используем плагин Hyper cashe. Но, всё же, может, кому и пригодится код сжатия страниц.

<FilesMatch "\.js.gz$">
ForceType text/javascript
Header set Content-Encoding: gzip

<FilesMatch "\.css.gz$">
ForceType text/css
Header set Content-Encoding: gzip

<FilesMatch "\.js$">
ForceType text/javascript
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.js$ $1\.js.gz [L]
ForceType text/javascript

<FilesMatch "\.css$">
ForceType text/css
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.css$ $1\.css.gz [L]
ForceType text/css

Запрет автоматического индексирования. Сервер Apache автоматически создаёт индексные файлы, которые собирают статистику о том, сколько и каких файлов находится в каждой папке. Чтобы запретить ему проводить такие операции, добавляем следующий код.

Options -Indexes

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

Кэширование в браузере клиента. Данная функция позволяет нам кэшировать страницы непосредственно в браузере. В нашем случае, нам этот код не понадобится, так как используется плагин кэширования. Но, на всякий случай, держите код.

Header append Cache-Control "private"
FileETag MTime Size
ExpiresActive On
ExpiresDefault "access plus 0 minutes"
ExpiresByType image/ico "access plus 1 years"
ExpiresByType text/css "access plus 1 years"
ExpiresByType text/javascript "access plus 1 years"
ExpiresByType image/gif "access plus 1 years"
ExpiresByType image/jpg "access plus 1 years"
ExpiresByType image/jpeg "access plus 1 years"
ExpiresByType image/bmp "access plus 1 years"
ExpiresByType image/png "access plus 1 years"

Даём разрешение на выполнение php-кода в Java-script. В некоторых случаях необходимо выполнение php непосредственно в Ява-скрипте. Чтобы открыть такую возможность, вставляем следующий код.

AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js
<filesmatch "\.(js|php)$">
SetHandler application/x-httpd-php

Указываем кодировку страниц по умолчанию. В последнее время кодировка UTF-8 стала более популярной и часто-применяемой. WordPress, в нашем случае, справляется с этой задачей на отлично. По желанию, Вы можете добавить в .htaccess следующий код.

AddDefaultCharset UTF-8

Вот и всё, пожалуй. На самом деле возможностей у .htaccess намного больше, но не будем вникать во все его прелести. Нам хватит и этого. Перед тем, как добавлять такие директивы, подумайте, нужны ли они Вам. Прописывать предложенные коды без причины, не стоит. Применяйте только тогда, когда это действительно нужно.

На это у меня всё. Спасибо что уделили внимание. До новых встреч. С уважением, Александр Васильев.

БредТак себеНеплохоХорошоОтлично
Загрузка...
Подписка на новые статьи блога


Не будь жадиной! Поделись с друзьями :)



Комментарии к этой записи (Правила):

  1. seoonly (05.10.2014)



    Сложная это штука, особенно в плане тонкой настройки

    1. Александр Васильев (07.10.2014)



      В плане тонкой — да. Но вообще этот пост может никому и не пригодится. Так, написал, для общего развития :)

  2. Юрий Йосифович (20.11.2014)



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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

:arrow: 
:biggrin: 
:confused: 
:cool: 
:cry: 
:eek: 
:evil: 
:exclaim: 
:idea: 
:lol: 
:mad: 
:mrgreen: 
:neutral: 
:question: 
:razz: 
:redface: 
:rolleyes: 
:sad: 
:) 
:surprised: 
:twisted: