разное .htaccess - набор инструкций к включению/использованию 

Дата публикации  Дата изменения03.12.15  КомментарииНет   Просмотры2624

Инструкции в .htaccess предназначены для оптимизации/управления работы сайта по различным аспектам – скорости загрузки, временной зоны сайта, правил редиректа, вывода ошибок и пр.

### Закомментированое указание индексного файла - название запускного (по умолчанию) файла может быть любым - указывается и раскомментируется при необходимости 
    #DirectoryIndex index.php index.html
### Закрываем доступ по ip нарушителям (пустым быть не может - лучше совсем удалить, если некого банить
<Limit POST, GET>
Order Allow,Deny
Allow from all
Deny from 127.0.2.1
###Бан ботов по подсети IP
# Bots: Twingly Recon, twingly.com
    Deny from 80.252.169.0 - 80.252.171.255
# Bots: Parse Robot
   Deny from 146.120.240.0 - 146.120.255.255 
# Bots: Synapse bot
   Deny from 94.242.206.90 - 94.242.222.107
# Bots: PaperLiBot/2.1, support.paper.li
   Deny from 37.187.149.179 - 37.187.186.143
</Limit>
###Кодировка 
    AddDefaultCharset utf-8
###запрещает показывать содержимое каталогов, если в них нет индексного файла 
    Options -Indexes
###позволяет использовать символические ссылки на файлы или каталоги вне  корня сайта
    Options +FollowSymLinks
###Временная зона сайта: http://www.php.net//manual/ru/timezones.php
<IfModule mod_setenvif.c>
    SetEnv TZ Europe/Moscow
</IfModule>
###скрыть подпись сервера
    ServerSignature Off
###включение режима перенаправления - в идеале лучше проверять наличие модуля, но его отсутствие/невключение достаточно редко (все правила включить между <IfModule mod_rewrite.c> и </IfModule>
    RewriteEngine On
###указываем корень перенаправления - если, например, сайт в подпапке, то указывается эта папка как отправная точка отсчета
    RewriteBase /
###Склейка зеркал на основной без www
    RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC]
    RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]
###Убирается расширение .php из адресной строки
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php [L]
###закомментировано: закрываем доступ по имени сайта (если даже ip изменится, то название все равно останется)
    #RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?bad_site.com.*$ [NC]
    #RewriteRule .* - [F,L]
###Попытка закрыть возможность скачивания через телепорт - бесполена, в общем-то, поскольку он и подобные могут маскироваться под USER_AGENT разных браузеров - но все-таки
    RewriteCond %{HTTP_USER_AGENT} ^Teleport
    RewriteRule ^.*$ - [F]
###Блокировка доступа к сканированию сайта роботами Ahrefs и Open Site Explorer
    RewriteCond %{HTTP_USER_AGENT} ^rogerbot [OR]
    RewriteCond %{HTTP_USER_AGENT} ^AhrefsBot
    RewriteRule .* - [F]
###Защита от хотлинка - то есть, от отображения материалов сайта на другом сайта через простое указание источника. Можно добавлять любые желаемые расширения по тому же принципу
    RewriteCond %{HTTP_REFERER} !^$
#если пришли и _не_ с сайта http://site.ru
    RewriteCond %{HTTP_REFERER} !^http://(www.)?site\.com/.*$ [NC]
    RewriteRule .(jpg|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip)$ - [F]
###Явное выключение магических кавычек: _http://www.php.su/security/?magicquotes
    php_flag magic_quotes_gpc off
###Закомментированное явное отключение глобальных переменных - опции в php.ini, которая указывает на необходимость регистрации переменных полученные методом POST или GET в глобальный массив $GLOBALS 
    #php_value register_globals 0
###отключаем вывод ошибок - в лог писаться будут, а пользователю незачем видеть
    php_flag display_errors off
    php_flag display_startup_errors off
###сжатие по типам - если модкль включен
<IfModule mod_gzip.c>
    mod_gzip_on         Yes
    mod_gzip_dechunk    Yes
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
    mod_gzip_item_include mime ^text\.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image\.*
    mod_gzip_item_exclude rspheader	^Content-Encoding:.*gzip.*
</IfModule>
###кэширование, кастомизированное по типам
<ifModule mod_headers.c>
    #кэшировать html и htm файлы на один день
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    #кэшировать css, javascript и текстовые файлы на одну неделю
    <FilesMatch "\.(js|css|txt)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    #кэшировать флэш и изображения на месяц
    <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    #отключить кэширование
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>
###Продолжение кэширования по другому модулю
<ifModule mod_expires.c>
    ExpiresActive On
    #по умолчанию кеш в 5 секунд
    ExpiresDefault "access plus 5 seconds"
    #кэшировать флэш и изображения на месяц
    ExpiresByType image/x-icon "access plus 2592000 seconds"
    ExpiresByType image/jpeg "access plus 2592000 seconds"
    ExpiresByType image/png "access plus 2592000 seconds"
    ExpiresByType image/gif "access plus 2592000 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    #кэшировать css, javascript и текстовые файлы на одну неделю
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 604800 seconds"
    ExpiresByType application/javascript "access plus 604800 seconds"
    ExpiresByType application/x-javascript "access plus 604800 seconds"
    #кэшировать html и htm файлы на один день
    ExpiresByType text/html "access plus 43200 seconds"
    #кэшировать xml файлы на десять минут
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

Полезные ссылки по теме (при включении каждой инструкции желательно сразу же проверять работоспособность – то же относится и к htaccess варианту выше):

+, конечно, источник по Апач (англ):

  • Примечание – в ряде случаев инструкции срабатывают без включения в условие проверки подключения модуля – включение проверки может вызывать 5хх ошибку.

⇥ Проверка/посмотреть включения/е модулей:

<?=phpinfo();?>
Смотреть в:
apache2handler
Loaded Modules 

<?php print_r(apache_get_modules());?>

Блоки (массив) модулей в каждом разделе:
<? print_r(get_loaded_extensions()); ?>

Для apache2, из консоли:
apache2ctl -t -D DUMP_MODULES

Бесплатные курсы

Категории

Теги: , , , , , , , , , , , , , , , , , , , , ,

Оцените материал:

Рейтинг: 8.5/10 (4)


КомментарииКомментарии:

Нет комментариев к этой статье.


Поля, обозначенные как *, обязательны.





Максимальная длина сообщения 900 символов. Осталось   символов

 

Старые →← Новые