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

По теме:


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

Наверняка, многие слышали про этот файл. Файл .htaccess – это сердце сервера, на котором размещается сайт. Именно он отвечает за то, как именно будет реагировать сайт на действия, которые будут осуществляться посетителями. Я немного ковырялся в этом файле.

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

Те сниппеты, которые я ниже приведу, можно вставлять в файл .htaccess. Это файл расположен в корневой папке веб-сервера Apache.

Внимание! Всегда нужно страховаться. Если что-то крутите-мутите, то, чего не сильно знаете, то всегда бэкапьтесь.

Кросс-доменная интеграция шрифтов для Firefox

<filesmatch "\.(ttf|otf|eot|woff)$">
<ifmodule mod_headers.c>
	Header set Access-Control-Allow-Origin "http://yourdomain.com"
</ifmodule>
</filesmatch>

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

Запуск PHP внутри файлов javascript

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

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

Ведём лог PHP-ошибок

# display no errs to user
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# log to file
php_flag log_errors on
php_value error_log /location/to/php_error.log

Часто косяки php можно заменять прямо на сайте. Проблема решается. Можно сделать так, чтобы эти ошибки записывались в лог-файл. Тогда обычные посетители не будут видеть эти глюки, но зато вам они будут отлично видны.

Настройка сайта для работы с html5-видео

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
AddType video/ogg .ogv
AddType video/ogg .ogg
AddType video/mp4 .mp4
AddType video/webm .webm
AddType application/x-shockwave-flash swf

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

Перенаправление различных рассылок в один формат

<ifmodule mod_alias.c>
RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/
RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/
</ifmodule>

Помните про форматы рассылок типа RSS или Atom? Вопросов нет, все это нужно. Но просто неудобно, когда они живут обособленно. Гораздо удобнее, чтобы все форматы приводились в один. Разумеется, в RSS. С помощью данного сниппета этот вопрос можно решить. Кстати, это особенно актуально, когда речь идет о WordPress.

Дадим отпор спамерам в WordPress

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</ifmodule>

Не, ну по любому сейчас все подумаю, что есть Akismet. Нафига эти лишние настройки. Да, Акисмет хорошо помогает, но эту же проблему можно решить более практично, через .htaccess. Проблема решается путем запрета доступа ботам. Просто запрещается доступ к wp-comments-post.php.

Использование кэша .htaccess для ускорения работы сайта

# 1 YEAR
<filesmatch "\.(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</filesmatch>
# 1 WEEK
<filesmatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</filesmatch>
# 2 DAYS
<filesmatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</filesmatch>
# 1 MIN
<filesmatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</filesmatch>	

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

Перенаправление мобильных устройств

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
#------------- The line below excludes the iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW
RewriteRule ^(.*)$ /m/ [L,R=302]	

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