ЗАРЕГИСТРИРУЙТЕСЬ
и получите бесплатно:
1.Чек-лист по созданию информационного сайта.
2.3 видеоурока с первыми шагами в сайтах.
3.10 лучших материалов из Базы Знаний.



или Регистрация
Восстановление пароля

Использование файла .htaccess для управления настройками сайта

Чтобы сайт функционировал, необходим веб-сервер ー программное обеспечение (ПО), обеспечивающее доступ к данным протоколов http и https.

Самый распространенный из них ー Apache. Он настраивается через конфигурационные файлы в формате текста. К главному из них ー httpd.conf или apache.conf ー доступ есть не у всех пользователей сервиса, поэтому остальным предлагается .htaccess настройка.

Что такое .htaccess

.htaccess ー это файл веб-сервера, который позволяет управлять настройками сайта и работой сервера, не изменяя при этом конфигурационного файла.

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

Благодаря работе с .htaccess можно:

  • настроить редирект;
  • изменить страницы ошибок;
  • сделать сайт безопаснее;
  • увеличить скорость работы сайта;
  • настроить php параметры.

Где находится файл .htaccess

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

В этом случае нужно зайти в менеджер файлов в папку public_html, внести изменения в .htaccess с помощью текстового редактора и сохранить. Если и там вам не удастся его найти — смело создавайте собственный.

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

В некоторых системах управлением содержимым ー Content Management System (CMS) ー можно найти .htaccess в административной панели. Пример из Битрикса: 

Пример из Битрикса

Как проверить, работает ли .htaccess

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

Если этого не произойдет, значит .htaccess не функционирует. В случае нормального функционирования выйдет ошибка 500 Internal Server Error.

Как создать

Создать .htaccess можно в любом текстовом редакторе, например «Блокнот» Microsoft или Notepad++.

Последний предпочтительнее, так как в «Блокноте» при сохранении файла в кодировке UTF-8 может присутствовать маркер последовательности байтов (ВОМ-сигнатуры) ー специальный символ, который вставляется в начало текстового файла. Это может повлечь за собой проблемы в раскодировке информации.

Для создания .htaccess открываем пустой файл в редакторе, нажимаем «Файл» -> «Сохранить как», а затем называем его .htaccess и ставим тип файла «Все файлы». Далее сохраняем и размещаем его в корневом каталоге сайта.

Прежде чем приступать к редактированию, проверьте, не выдает ли сервер ошибку 500.

Работа с файлом .htaccess

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

Правильный 301 редирект

Сперва прописываем:

RewriteEngine On

Это делается для того, чтобы редирект работал. Далее в зависимости от нужд:

  • Перенаправление с одной страницы на другую (или сайт): 

Redirect 301 /старая-страница.html http://сайт.рф/новая-страница.html

  • Перенаправление с сайта с www на сайт без www: 

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]

RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

  • Редирект пользователей с одного сайта на другой: 

Redirect 301 / http://newsite.com/

  • Перенаправление с одного раздела на другой: 

RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L]

  • Перенаправление при смене домена: 

RewriteCond %{HTTP_HOST} ^www.oldsite.com$ [NC,OR]

RewriteCond %{HTTP_HOST} ^test.oldsite.com$ [NC]

RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]

Правильное изменение страниц ошибок

Коды ошибок с 400 по 599 указывают на неправильную работу сервера, но рядовому пользователю они ни о чем не говорят. Увидев непонятный текст, он может решить, что сайт прекратил свою работу, и больше на него не вернуться.

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

Нет такой страницы

После этого добавляем в .htaccess код по примеру:

ErrorDocument 404 http://yoursite.com/404.html

Настройки безопасности сайта

Код отличается в зависимости от того, что именно вы хотите сделать и как обезопасить ваш сайт.

При защите от скриптинговых атак

Скриптиновая атака ー это внедрение вредоносного кода в страницу сайта злоумышленником.

  • для отслеживания символических ссылок (обманка, которая заставляет систему думать, что файл настоящий, хотя на самом деле это не так) включаем:

Options +FollowSymLinks

  • для блокировки ссылок со <script>:

RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]

  • для скриптов, пытающихся изменить переменные PHP Globals (дают доступ ко всей программе):

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

  • чтобы заблокировать скрипты, пытающиеся изменить переменную _REQUEST (переменная запросов):

RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

  • чтобы перенаправить все скриптовые инъекции на страницу с ошибкой 403 (запрещено):

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

Для защиты от кражи картинок

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

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

Options +FollowSymlinks

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www.)?yoursite.com/ [nc]

RewriteRule .*.(gif|jpg|png)$ http://yoursite.com/images/stop_stealing.gif[nc]

Заблокировать доступ к сайту

  • для конкретного IP:

allow from all

deny from 164.186.15.116

deny from 124.153.34.144

  • для всех IP, кроме желаемых:

ErrorDocument 403 http://www.yoursite.com

Order deny,allow

Deny from all

Allow from 164.186.15.116

Allow from 124.153.34.144

  • чтобы запретить доступ к папке:

Options All -Indexes

  • чтобы запретить доступ к файлу:

<files myfile.txt>

order allow,deny

deny from all

</files>

  • чтобы запретить доступ к файлам определенного вида:

<Files "\.(txt)$">

Order Deny,Allow

Deny from all

</Files>

  • чтобы заблокировать расширения:

SetEnvIfNoCase user-Agent ^Zeus [NC]

<limit get="" post="" head="">

Order Allow,Deny

Allow from all

Deny from env=bad_bot

</limit>

Оптимизация работы сайта

Ускорение работы с сайта за счет сжатия информации

Используем один из трех кодов и проверяем, какой работает лучше:

1.

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4.0[678] no-gzip

BrowserMatch bMSIE !no-gzip !gzip-only-text/html

<ifmodule mod_gzip.c>

mod_gzip_on Yes

mod_gzip_item_include file \.js$

mod_gzip_item_include file \.css$ </ifmodule>

</IfModule>

2.

FileETag MTime Size

<ifmodule mod_expires.c>

<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">

ExpiresActive on

ExpiresDefault "access plus 1 month"

</filesmatch>

</ifmodule>

3. 

<ifModule mod_gzip.c>

mod_gzip_on Yes

mod_gzip_dechunk Yes

mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$

mod_gzip_item_include handler ^cgi-script$

mod_gzip_item_include mime ^text/.*

mod_gzip_item_include mime ^application/x-javascript.*

mod_gzip_item_exclude mime ^image/.*

mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

</ifModule>

Улучшение кэширования

Увеличивает скорость загрузки просмотренных страниц и снижает нагрузку на сервер за счет того, что не загружает повторно уже просмотренные картинки, элементы дизайна и пр. Используем один из двух, кодов, который будет работать лучше:

1.

<IfModule mod_expires.c>

ExpiresActive On

ExpiresByType application/javascript "access plus 7 days"

ExpiresByType text/javascript "access plus 7 days"

ExpiresByType text/css "access plus 7 days"

ExpiresByType image/gif "access plus 7 days"

ExpiresByType image/jpeg "access plus 7 days"

ExpiresByType image/png "access plus 7 days"

</IfModule>

2.

FileETag MTime Size

<ifmodule mod_expires.c>

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

ExpiresActive on

ExpiresDefault "access plus 1 month"

</filesmatch>

</ifmodule>

Настройка php параметров

PHP ー это язык программирования, на котором написаны интернет-странички. Обычно настройки выполняются через файл php.ini, однако на виртуальном хостинге доступа к нему обычно не бывает.

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

Для этого необходимо обратиться к выражениям php_value:

 <ifModule mod_php.c>

  php_value upload_max_filesize 125M

  php_value post_max_size 20M

  php_value max_execution_time 60

</ifModule>

При этом в upload_max_filesize указываем максимальный размер загружаемых файлов(в мегабайтах), в post_max_size — максимальный объем постинга, а в max_execution_time — время на обработку скриптов (в секундах).

Какое влияние оказывает htaccess файл на сайт

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

Пользуетесь .htaccess? Расскажите в комментариях, чем именно он вам помогает!

Комментарии