This page has been robot translated, sorry for typos if any. Original content here.

Кілька способів настройки файлу .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]	

Якщо ви пихнув над створенням мобільної версії сайту, то навіщо, щоб користувачі, які приходять на звичайну, лазили там. Їх потрібно перенаправити на мобільну версію.