Простая настройка .htaccess для production

в 22:01, , рубрики: Apache, tips and tricks, Веб-разработка, метки: , , ,

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

1. Кодировка

Всегда указываем кодировку. По умолчанию лучше выбирать utf-8.

AddDefaultCharset UTF-8

2. Редирект на один домен

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

Сделаем это используя код 301

<IfModule mod_rewrite.c>
    Options +Followsymlinks
    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^example.com [OR]
    RewriteCond %{HTTP_HOST} ^example2.com  [OR]
    RewriteCond %{HTTP_HOST} ^www.example2.com
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]    
</IfModule>

3. Кеширование статических ресурсов

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

Избавимся от этого. Для этого поставим время проверки обновления ресурса на несколько лет вперед, и отключим проверку ETag

<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "public"
Header set Expires "Fri, 21 Dec 2012 20:00:00 GMT" #Until the end of the world
FileETag None
</FilesMatch>

4. Сжатие текстовых файлов

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

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

Выводы

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

Автор: krugvs

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js