Несколько способов настройки файла .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]
Если вы попыхтели над созданием мобильной версии сайта, то зачем, чтобы пользователи, которые приходят на обычную, лазили там. Их нужно перенаправить на мобильную версию.
Created/Updated: 25.05.2018