Вот простая шпаргалка для файла .htaccess
Включить просмотр каталогов
1 2 3 | Options +Indexes ## блокировать показ нескольких типов файлов IndexIgnore *.wmv *.mp4 *.avi |
Отключить просмотр каталогов
1 | Options All -Indexes |
Настроить сообщения об ошибках
1 2 3 | ErrorDocument 403 /forbidden.html ErrorDocument 404 /notfound.html ErrorDocument 500 /servererror.html |
Обеспечение работы SSI с HTML/SHTML
1 2 3 4 5 | AddType text/html .html AddType text/html .shtml AddHandler server-parsed .html AddHandler server-parsed .shtml # AddHandler server-parsed .htm |
Изменение страницы по умолчанию (порядок соблюдается!)
1 | DirectoryIndex myhome.htm index.htm index.php |
Запретить пользователям доступ к сайту
1 2 3 4 5 6 7 | <limit GET POST PUT> order deny,allow deny from 10.20.30.40 deny from 20.30.40.50 deny from .spammers.net allow from all </limit> |
Разрешить доступ только пользователям локальной сети
1 2 3 4 5 | order deny,allow deny from all allow from 10.0.0.0/8 allow from 172.16.0.0/12 allow from 192.168.0.0/16 |
Перенаправление посетителей на новую страницу/каталог
1 2 | Redirect oldpage.html http://www.domain.com/newpage.html Redirect /olddir http://www.domain.com/newdir/ |
Блокировать сайт от определенных рефералов
1 2 3 4 | RewriteEngine on RewriteCond %{HTTP_REFERER} site-to-block\.com [NC] RewriteCond %{HTTP_REFERER} site-to-block-2\.com [NC] RewriteRule .* - [F] |
Блокировать горячие ссылки
1 2 3 4 | RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC] RewriteRule \.(gif|jpg)$ - [F] |
Хотите также показать сообщение "Воровство - это плохо"?
Добавьте это ниже кода блокировки горячих ссылок:
1 | RewriteRule \.(gif|jpg)$ http://www.mydomain.com/dontsteal.gif [R,L] |
Запретить просмотр .htaccess (или любого другого файла)
1 2 3 4 | <files file-name> order allow,deny deny from all </files> |
Избегайте 500 ошибки
1 2 | # Избегайте 500 ошибки, передавая charset AddDefaultCharset utf-8 |
Предоставление доступа к CGI в каталоге
1 2 3 4 | Options +ExecCGI AddHandler cgi-script cgi pl # Чтобы разрешить все скрипты в каталоге, используйте следующее # SetHandler cgi-script |
Изменить расширения скрипта
1 | AddType application/x-httpd-php .ogo |
ogo теперь будут рассматриваться как файлы PHP! Аналогично, x-httpd-cgi для CGI файлов и т.д.
Проверка орфографии директив
CheckSpelling исправляет простые орфографические ошибки (например, если кто-то забыл букву или просто неправильно написал какой-либо символ). Просто добавьте CheckSpelling On в ваш файл htaccess.
1 | CheckSpelling On |
Директива ContentDigest
Производительность может пострадать, но если это не проблема, то эту опцию стоит включить.
Как сказано в документации по основным функциям Apache: Эта директива позволяет генерировать заголовки Content-MD5, как определено в RFC1864 и RFC2068. Заголовок Content-MD5 обеспечивает сквозную проверку целостности сообщения (MIC) тела сущности. Прокси-сервер или клиент может проверить этот заголовок для обнаружения случайного изменения тела сущности при передаче.
Обратите внимание, что это может вызвать проблемы с производительностью вашего сервера, так как дайджест сообщения вычисляется при каждом запросе (значения не кэшируются). Content-MD5 отправляется только для документов, обслуживаемых ядром, а не каким-либо модулем. Например, SSI-документы, вывод CGI-скриптов и ответы с диапазоном байтов не имеют этого заголовка.
Чтобы включить этот параметр, просто добавьте
1 | ContentDigest On |
Включить Gzip (Экономия пропускной способности)
1 2 3 | <ifmodule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </ifmodule> |
Отключите magic_quotes_gpc
Только если вы используете PHP
1 2 3 | <ifmodule mod_php4.c> php_flag magic_quotes_gpc off </ifmodule> |
Установите заголовок Expires и включите Cache-Control
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <ifmodule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType text/html "access plus 7200 seconds" ExpiresByType image/gif "access plus 518400 seconds" ExpiresByType image/jpeg "access plus 518400 seconds" ExpiresByType image/png "access plus 518400 seconds" ExpiresByType text/css "access plus 518400 seconds" ExpiresByType text/javascript "access plus 216000 seconds" ExpiresByType application/x-javascript "access plus 216000 seconds" </ifmodule> <ifmodule mod_headers.c> # Кэшировать указанные файлы в течение 6 дней <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$"> Header set Cache-Control "max-age=518400, public" </filesmatch> # Кэширование HTML файлов на пару часов <filesmatch "\.(html|htm)$"> Header set Cache-Control "max-age=7200, private, must-revalidate" </filesmatch> # Кэширование PDF-файлов на один день <filesmatch "\.(pdf)$"> Header set Cache-Control "max-age=86400, public" </filesmatch> # Кэширование яваскриптов на 2,5 дня <filesmatch "\.(js)$"> Header set Cache-Control "max-age=216000, private" </filesmatch> </ifmodule> |