Здравствуйте. Сегодня хотелось бы поговорить о .htaccess Начнем с того, что .htaccess (Hypertext Access file) файлы являются очень мощным инструментом по конфигурации веб-сервера Apache. Сервер Apache Web имеет множество опций настройки, которые доступны для администратора сервера. .htaccess это простой текстовый ASCII файл, размещенный на веб-сайте в корневом каталога. Вы можете создавать и редактировать .htaccess файлы с помощью любого текстового редактора.
Перед тем, как рассказать о полезных приемах работы с .htaccess, которые я нарыл на просторах интернета, в частности спасибо блогу www.thomsonchemmanoor.com, нужно ввести четкое правило: перед тем как вы делаете какие-либо изменения в .htaccess — обязательно делайте резервные копии файла.
1. Настраиваемые страницы ошибок придают вашему сайту профессиональный вид и помогают тем посетителям, которые попадают на ваш сайт по «битым ссылкам». Создание страницы ошибки, с .htaccess на Linux Apache является очень простой задачей. Для этого подойдет любой текстовый редактор, допустим блокнот. В файл .htaccess нужно добавить такие строки:
ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php |
2. Как установить часовой пояс на вашем сервере
SetEnv TZ America/Houston |
3.Блокировка IP-адреса с .htaccess
Иногда вам придется блокировать определенные IP-адреса для доступа к вашему сайту или определенному каталогу. Это довольно простая задачей. Все, что вам нужно сделать, это внутри .htaccess файла прописать следующий код:
allow from all deny from 145.186.14.122 deny from 124.15 |
Если вы используете весь IP, то добавляйте строки по типу второй в коде. Если используете диапазон адресов, то задавайте диапазон по типу третьей строки кода, как полные так и диапазоны IP добавляются каждый с новой строки. Когда кто-то пытается получить доступ к сайту с запрещенным IP он получает 403 ошибка доступа.
4. Дружественная для SEO 301-я переадресация для постоянных плохих/старых ссылок и ссылок, которые «переехали».
Redirect 301 /d/file.html http://www.domainname.com/r/file.html |
5. Установить адрес электронной почты администратора сервера. С помощью этого кода вы можете указать адрес электронной почты по умолчанию для администратора сервера.
ServerSignature EMail SetEnv SERVER_ADMIN default@domain.com |
6. Защита «хотлинков» с .htaccess очень важна, потому что кто-угодно может использовать прямую ссылку на ваши изображения и «съедать» всю пропускную способность сервера. Следующий код поможет вам предотвратить это.
Options +FollowSymlinks # Protect Hotlinking RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc] RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/hotlink_f_o.png [nc] |
7. Запрет на все запросы User Agent. Путем создания списка запрета в .htaccess, можно заблокировать всех нежелательных агентов пользователя, которые будут создавать нежелательную нагрузку на сервер.
## .htaccess Code :: BEGIN ## Block Bad Bots by user-Agent SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC] <Limit GET POST HEAD> Order Allow,Deny Allow from all Deny from env=bad_bot </Limit> ## .htaccess Code :: END |
8. Переадресация всех к различным сайтам, за исключением нескольких IP. Если вы хотите перенаправлять всех посетителей на другой IP и предоставить доступ посетителям лишь с несколькими IP-адресами, то вы можете использовать следующий код:
ErrorDocument 403 http://www.youdomain.com Order deny,allow Deny from all Allow from 124.34.48.165 Allow from 102.54.68.123 |
9. Запрет загрузки фалов определенного типа. Как правило, при попытке загрузить что-нибудь, нажимая на ссылку, вы получаете сообщение системы с запросом о том сохранить или открыть загружаемый файл.
Чтобы запретить автоматическую загрузку вы можете использовать код приведенный ниже в своем .htaccess файле:
AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .mov |
10. Изменить тип файла. Сделать так чтобы любой файл был определенного типа, можно используя код приведенный ниже. В примере любые файлы типа image.jpg, index.html, default.cgi будут выступать в качестве PHP.
<Files test> ForceType application/x-httpd-php SetHandler application/x-httpd-php </Files> |
11. Блокировать доступ к вашему .htaccess файлe. Добавив следующий код в файле .htaccess вы предотвратите попытки несанкционированного доступа к нему. Этот дополнительный уровень безопасности для защиты .htaccess файлов, отображает 403 сообщение об ошибке в браузере.
# secure htaccess file <Files .htaccess>  order allow,deny  deny from all </Files> |
12. Защита доступа к некоторым конкретным файл на вашем сервере. Это может быть сделано путем добавления указанного ниже кода. Например, вы хотите блокировать файл с именем default.jpg? Код ниже позволит избежать просмотра этого файла.
# prevent access of a certain file <files default.jpg>  order allow,deny  deny from all </files> |
13. Запретить доступ к несанкционированным просмотром. Защита конкретных каталогов от просмотра может быть сделано путем отдачи сервером сообщений об авторизации или запрещенном доступе, при каждом запросе к запрещенной директории. Как правило, если ваш сайт не имеет индексовой страницы заданной по умолчанию, то все файлы в этом каталоге будут доступны для посетителей. Чтобы избежать этого используйте следующий код в файле .htaccess файле.
# disable directory browsing Options All -Indexes |
14. Настройка страницы по умолчанию. Вы можете задать любую страницу для определения по умолчанию в определенной категории. Например, в этом коде страницей сайта по умолчанию устанавливается about.html вместо index.html
# serve alternate default index page DirectoryIndex about.html |
15. Защита паролем ваших каталогов и файлов. Вы можете создать аутентификации для для доступа к определенным файлов и директориям. В коде представлены примеры как защиту паролем один файл, и защитить паролем целый каталог.
# защищаем файл <Files secure.php> AuthType Basic AuthName “Prompt” AuthUserFile /home/path/.htpasswd Require valid-user </Files> # защита паролем директории resides AuthType basic AuthName “This directory is protected” AuthUserFile /home/path/.htpasswd AuthGroupFile /dev/null Require valid-user |
16. Перенаправление старого домена на новый домен. С помощью .htaccess файла вы можете перенаправить старое имя домена на новый домен. Для этого добавьте следующий код в файле .htaccess.
# redirect from old domain to new domain RewriteEngine On RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L] |
В заключении еще раз нужно сказать, что малейшая ошибка в синтаксисе или правилах .htaccess файла может вызвать неисправности сервера. Поэтому важно создавать резервные копии всего, прежде чем пытаться использовать хаки и трюки.
P.S. Несколько мыслей о разном…
Жизнь без сомнения прекрасна, но иногда бывают моменты, когда это суждение становится под вопросом. Именно тогда нужно услышать или прочитать какие-нибудь притчи или сказки о счастье, чтобы снова поверить в то, что она таки прекрасна.
Но не сказками едины мы живем, в частности успешная жизнь вебмастера зависит отчасти от хорошего хостинг провайдера. Хостинг-провайдер предлагает хостинг. Мы выбираем, берем… и, если повезет, то живем счастливо 🙂
А еще для счастливой жизни или продуктивной работы важен комфорт. Например со временем необходим ремонт и перетяжка мягкой мебели, просто чтобы было хорошо. Если нужно то помогут здесь
Yakov
Хотелось бы добавить, что действие файла .htaccess распространяется не на весь сервер (бедные тысячи и тысячи пользователей шаред хостинга ))))) а только в пределах директории, в которой он расположен, и вложенных в нее.
hiway
Резонно. Спасибо, Яха!
Mike
Видимо примеры из пунктов 11 и 12 содержат ошибки. По крайней мере они ничем не отличаются друг от друга.
Нур-Магомед
Еще как отличаются, в 11 примере защищается сам файл .htaccess а в 12 примере защищается какое-то изображение default.jpg
Hiway
Mike, спасибо, что «ткнули» в ошибку. Дело было в том, что в процессе рендренги редактор скрывал директивы файлов. Сейчас изменил преформатированный текст и теперь все директивы на месте.
poizon
Спасибо за весьма полезную информацию. Присмотрел для себя пару интересных ходов)
LIDOVSCI
По дефелауту я всегда выставляю параметры во так;
# так безопаснее
php_value register_globals 0
# убираем экранирование кавычек
php_value magic_quotes_gpc 0
# дописываем сессию к URL
php_value session.use_trans_sid 1
php_value session.cookie_lifetime 0
# кодировка по-умолчанию
AddDefaultCharset UTF-8
DirectoryIndex index.php
Options -Indexes
order allow,deny
deny from all
# задаем соответствие mime типов расширению
AddType text/vnd.wap.wml;charset=utf-8 .wml
AddType application/vnd.sonyericsson.mms-template tpl
AddType application/vnd.wap.wmlc .wmlc
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlscriptc .wmlsc
AddType image/vnd.wap.wbmp .wbmp
AddType application/vnd.eri.thm .thm
AddType application/vnd.mophun.application .mpn
AddType application/vnd.mophun.certificate .mpc
AddType text/vnd.sun.j2me.app-descriptor .jad
Addtype text/x-vmel .mel
Addtype audio/imelody .imy
AddType application/vnd.smaf .mmf
Addtype text/x-vmel .emy
AddType audio/amr .amr
AddType audio/x-wav .wav
AddType application/x-tar .hid
Addtype image/jpeg .jpg
Addtype image/jpeg .jpeg
Addtype image/gif .gif
Addtype image/png .png
Addtype image/bmp .bmp
Addtype text/x-imelody .imy
Addtype text/x-emelody .emy
Addtype text/x-vcard .vcf
Addtype text/x-vcalendar .vcs
Addtype text/calendar .ics
Addtype application/smil .smil
Addtype application/smil .smi
Addtype application/java-archive .jar
Addtype application/vnd.symbian.install .sis
Addtype audio/wav .wav
Addtype audio/midi .midi
Addtype audio/midi .mid
Addtype audio/rmf .rmf
Addtype application/vnd.wap.mms-message .mms
AddType video/flv .flv
AddType video/mp4 .mp4
Addtype video/3gpp .3gp
Addtype application/zip .zip
Addtype audio/mpeg .mp3
# переопределяем страницы ошибок
ErrorDocument 400 /err.php?err=400
ErrorDocument 401 /err.php?err=401
ErrorDocument 402 /err.php?err=402
ErrorDocument 403 /err.php?err=403
ErrorDocument 404 /err.php?err=404
ErrorDocument 500 /err.php?err=500
ErrorDocument 502 /err.php?err=502
Hiway
Клево. Спасибо.
inter
Спасибо за полезную информацию!
Раиса
А что, если это
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
не работает? тогда как?
Заказівать перетяжку мебели:)?
Pavel
А что, если это
ErrorDocument 401 /error/401.php
ErrorDocument 500 /error/500.php
не работает?
Ну поменяйте php на htm это каким убогим должен быть хостинг иль руки чтоб это не заработало… 🙂
belpremier
Всё равно защита от хотлинков не работает ((
Лана
Здравствуйте. Подскажите пожалуйста, можно ли закрыть доступ к одной странице сайта или сделать с нее перенаправление на другую страницу, для определенных IP адресов?
Hiway