### Закомментированое указание индексного файла - название запускного (по умолчанию) файла может быть любым - указывается и раскомментируется при необходимости
#DirectoryIndex index.php index.html
### Закрываем доступ по ip нарушителям (пустым быть не может - лучше совсем удалить, если некого банить
<Limit POST, GET>
Order Allow,Deny
Allow from all
Deny from 127.0.2.1
</Limit>
###Кодировка
AddDefaultCharset utf-8
###запрещает показывать содержимое каталогов, если в них нет индексного файла
Options -Indexes
###позволяет использовать символические ссылки на файлы или каталоги вне корня сайта
Options +FollowSymLinks
<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]
###Защита от хотлинка - то есть, от отображения материалов сайта на другом сайта через простое указание источника. Можно добавлять любые желаемые расширения по тому же принципу
RewriteCond %{HTTP_REFERER} !^$
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)$">
</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>