10 вставок кода для файла .htaccess

Файл .htaccess является сердцем веб сервера, который работает под управлением Apache. Именно здесь определяется реакция сервера на различные действия посетителя. в данном уроке приводится 10 с + приемов для использования в файле .htaccess.

Чтобы использовать вырезки кода, их надо просто скопировать в файл .htaccess, который располагается в корневом каталоге вашего сервера Apache.

Предупреждение: перед редактированием файла .htaccess нужно всегда делать резервную копию работающего варианта!

 

Принудительная постановка замыкающего слеша

Считается, что замыкающий слеш в адресе URL очень хорошо помогает в области SEO сайта. Следующий код всегда будет добавлять слеш в адрес URL вашего сайта.

<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} /+[^\.]+$
 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>

 

Предотвращаем хотлинк ресурсов сайта

Хотлинк (использование изображений вашего сайта другими сайтами в сети) является весьма популярной практикой, которая прожигает впустую трафик вашего сервера. Следующий код будет перенаправлять все хотлинк запросы к изображениям вашего сайта на определенную картинку, адрес которой задается в строке 6.

RewriteEngine On
#Замените ?mysite\.com/ на адрес вашего блога
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Замените /images/nohotlink.jpg на ваше изображение с запрещением хотлинка
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

 

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

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

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]
#------------- Строка ниже исключает iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] 
RewriteRule ^(.*)$ /m/ [L,R=302]

 

Принудительная загрузка файлов определенного типа

По некоторым причинам вам может потребоваться принудительная загрузка файлов определенных типов (например, MP3 или XLS). Нижеприведенный код будет предотвращать чтение таких файлов браузером и принудительно запускать загрузку.

<Files *.xls>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>
<Files *.eps>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>

 

Междоменное использование шрифтов для FireFox

При использовании встроенных шрифтов Firefox не позволяет брать их с внешних сайтов. Следующий код для файла .htaccess позволит обойти данное ограничение.

<FilesMatch "\.(ttf|otf|eot|woff)$">
<IfModule mod_headers.c>
#Замените yourdomain.com на адрес вашего блога
    Header set Access-Control-Allow-Origin "http://yourdomain.com"
</IfModule>
</FilesMatch>

 

Ускоряем сайт с помощью кэширования .htaccess

Используя кэширование .htaccess можно существенно увеличить скорость сайта.

# 1 ГОД
<FilesMatch "\.(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 НЕДЕЛЯ
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 2 ДНЯ
<FilesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</FilesMatch>
# 1 МИНУТА
<FilesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>

 

Отсекаем спам

Страдаете от спама на вашем блоге WordPress? Конечно, плагин Akismet может оказать существенную помощь, но и файл .htaccess не останется в стороне от борьбы с заразой. Данный код предотвращает непосредственный доступ спам ботов к файлу  wp-comments-post.php, который формирует комментарии на блоге.

# Заменяем yourdomainname на имя вашего домена
<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>

 

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

Несколько лет назад использовались различные форматы фидов, такие как RSS, Atom или Rdf. В наши дни RSS определенно стал самым используемым. Данный код позволяет перенаправить все форматы фидов в один формат.

# Заменяем URL на адрес своего блога
<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>

 

Конфигурируем сайт для видео HTML5

HTML5 привнес много новшеств в мир веб разработки. Возможность проигрывать видео без использования FLASH является одной из лучших особенностей HTML5. Хотя нужно правильно сконфигурировать  сервер для корректной работы с последними стандартами видео 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

 

Записываем ошибки PHP в журнал

Вместо вывода ошибок PHP на страницах вашего сайта (что дает информацию потенциальным хакерам…) можно записывать их в журнал (файл .log), скрывая от посетителей.

# отключаем вывод ошибок пользователям
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# заносим ошибки в журнал
php_flag log_errors on
php_value error_log /location/to/php_error.log

 

Запускаем PHP в файлах JavaScript

При разработке кода JavaScript иногда требуется использовать PHP в файлах .js.  Например, для получения данных из базы.

AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.catswhocode.com/blog/10-htaccess-snippets-to-optimize-your-website
Перевел: Сергей Фастунов
Урок создан: 28 Октября 2011
Просмотров: 63084
Правила перепечатки


5 последних уроков рубрики "Для сайта"

или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете
  • 30 Октября 2011 14:45
    Hamey
    Спасибо огромное! Супер! Я уже давно ищу подобное руководство.
  • 30 Октября 2011 16:50
    Владислав
    У вас опечатка!!! Например, для получения банных из базы. банных или ДАННЫХ?
  • 30 Октября 2011 17:31
    Slonoritsar
    спасибо!
  • 30 Октября 2011 18:30
    banzaj
    Классная статья, спасибо!
  • 30 Октября 2011 21:42
    notbot
    Огромное спасибо!
  • 31 Октября 2011 03:30
    Nof1000
    Запуск PHP в js, ух это вообще супер. Огромное спасибо вам!!!
  • 31 Октября 2011 09:37
    akmalsulaymonov
    Спасибо...
  • 31 Октября 2011 11:09
    rasul96
    почему не работает код "Запускаем PHP в файлах JavaScript" ставлю в .htaccess а в браузере выводит php просто php код
    • 31 Октября 2011 18:33
      evgenics
      Это не на всех хостингах работает
  • 31 Октября 2011 15:58
    Serpanok
    спасибо) оч помогло ;)))
  • 31 Октября 2011 17:09
    RebelioUS
    что то ничего у меня не пашет.
  • 31 Октября 2011 18:55
    FIFAGamer
    В принципе можно и на PHP такие проверки сделать. Хоть на ограничение расширения файлов хоть на что-то др.
    • 9 Ноября 2011 04:04
      artem.chub
  • 1 Ноября 2011 10:19
    smolina_viktory
    Подскажите, как именно работает код для "Предотвращаем хотлинк ресурсов сайта"? У меня не получается, хотя все остальные коды работают ((
  • 2 Ноября 2011 06:15
    maha
    Очень класная урок.. Привет Евгений Попов - Уменя один вопрос к вам, У меня есть вопрос на мой сайте есть сраница направления администратора но в а Google поевляется сылка на администратора как избежат ат такое - чтобы в google не поевился мой администратор сылка? C Уважени maha. Жду овета от вас?
    • 8 Ноября 2011 22:39
      truehazard
      запретить индексирование некоторых страниц и каталогов. у вас гугл аналитик стоит ? или яндекс метрика то они индексируют всё без исключения....
  • 3 Ноября 2011 23:49
    hors_de_prix
    а какой код прописать для конвертации ссылок к примеру - index.php в /index/ ?
  • 25 Ноября 2011 19:57
    PHP_Мастер
    ЭТОТ КОД НЕРАБОТАЕТ, ЕВГЕНИЙ ФИЛОНИТ <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] </IfModule>
  • 25 Декабря 2011 17:00
    assd
    Подскажите пожалуйста. Пишу: RewriteEngine On RewriteRule ^index/$ /index.php [NC,L] и не работает. Может в денвере не хочет.
  • 12 Января 2012 09:58
    egoel
    Здравствуйте, Евгений! Подскажите как скрыть структуру каталогов сайта отображающеюся в адресной сроке браузера от пользователя?
  • 12 Января 2012 10:21
    egoel
    В место картинки отображается просто рамка пустого места, все перепробовала. Картинка создана, но результата ноль(
  • 2 Марта 2012 12:10
    JonnyD
    Объясните поподробней "Перенаправляем мобильные устройства", если можно создать небольшой урок на эту тему. Думаю для многих это будет нужной информацией. Заранее спасибо!
  • 1 Апреля 2012 19:30
    79211535150
    <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
    </IfModule>
    а у меня он почему то не работает... в чем может быть проблема? Вот содержание из .htaccess: <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] </IfModule> создал на своем пк файл .htaccess ---> скопировал в него <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] </IfModule> и сохранил, после отправил в корень на хостинге. сайт у меня на хтмл. Помогите разобраться, плыз!
  • 8 Апреля 2012 20:17
    dmitriy.zhilyaev
    В статье "Записываем ошибки PHP в журнал". Мне интересно: файл сам создается или его надо создать и положить в папку(а вот в какую). А также: <?php . . . *// здесь типо исходный код ДО . else{ echo 'Что за развод!?'; exit(); } ?> Что с этим?
  • 5 Декабря 2012 13:03
    Вітя Омельчук
    Спасибо очень полезная статья
  • 6 Марта 2013 00:41
    dtemali
    Класс! Клевая статья!!!
  • 8 Ноября 2014 13:55
    igorvoronoff
    Со вчерашнего дня, есть и активная защита от хотлинкеров. Не прячьте от них контент, пусть создадут свои сайты. Пока у них не много посетителей, они не мешают. А дальше, можно заблокировать, только доступ с сайта хотлинкера и показывать ему вашу рекламу. "Индивидуальный подход" к каждому. Одним кликом кому-то можно запретить или разрешить показ Вашего контента. СПИСОК ПОДКЛЮЧИВШИХСЯ ХОТЛИНКЕРОВ В ВАШИХ РУКАХ Читайте здесь - http://hlhunter.ru Смотрите на видео - http://youtu.be/3YOo3fZWeeM А здесь - http://sufferer.ru можете даже на себе испытать, как это работает
  • Комментарий удален
    • 30 Октября 2011 20:21
      WI_Wind
      Чего не получается, все есть:
      <?php
      echo 'Что за развод!?';
      exit();
      ?>
      
      • 22 Апреля 2012 19:23
        Alexandr Nezhalko
        Ребят, а как nohotlink отобразится на индексированных картинках в поисковиках?
^ Наверх ^