Опубликовано автор в категориях Всем сразу.


Здравствуйте. Сегодня хотелось бы поговорить о .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. Несколько мыслей о разном…
Жизнь без сомнения прекрасна, но иногда бывают моменты, когда это суждение становится под вопросом. Именно тогда нужно услышать или прочитать какие-нибудь притчи или сказки о счастье, чтобы снова поверить в то, что она таки прекрасна.

Но не сказками едины мы живем, в частности успешная жизнь вебмастера зависит отчасти от хорошего хостинг провайдера. Хостинг-провайдер предлагает хостинг. Мы выбираем, берем… и, если повезет, то живем счастливо 🙂

А еще для счастливой жизни или продуктивной работы важен комфорт. Например со временем необходим ремонт и перетяжка мягкой мебели, просто чтобы было хорошо. Если нужно то помогут здесь

14 комментариев к записи “Полезные приемы в работе с .htaccess”

  1. Yakov

    Хотелось бы добавить, что действие файла .htaccess распространяется не на весь сервер (бедные тысячи и тысячи пользователей шаред хостинга ))))) а только в пределах директории, в которой он расположен, и вложенных в нее.

    Ответить
  2. Mike

    Видимо примеры из пунктов 11 и 12 содержат ошибки. По крайней мере они ничем не отличаются друг от друга.

    Ответить
    • Нур-Магомед

      Еще как отличаются, в 11 примере защищается сам файл .htaccess а в 12 примере защищается какое-то изображение default.jpg

      Ответить
  3. Hiway

    Mike, спасибо, что «ткнули» в ошибку. Дело было в том, что в процессе рендренги редактор скрывал директивы файлов. Сейчас изменил преформатированный текст и теперь все директивы на месте.

    Ответить
  4. 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

    Ответить
  5. Раиса

    А что, если это
    ErrorDocument 401 /error/401.php
    ErrorDocument 403 /error/403.php
    ErrorDocument 404 /error/404.php
    ErrorDocument 500 /error/500.php
    не работает? тогда как?
    Заказівать перетяжку мебели:)?

    Ответить
  6. Pavel

    А что, если это
    ErrorDocument 401 /error/401.php
    ErrorDocument 500 /error/500.php
    не работает?

    Ну поменяйте php на htm это каким убогим должен быть хостинг иль руки чтоб это не заработало… 🙂

    Ответить
  7. Лана

    Здравствуйте. Подскажите пожалуйста, можно ли закрыть доступ к одной странице сайта или сделать с нее перенаправление на другую страницу, для определенных IP адресов?

    Ответить
    • Hiway

      Лана Да, конечно, нужно проверять IP адрес в строке запроса и ставить редирект для него в хатасе. Описывать дословно не буду, но это вполне просто гуглится.

      Ответить

Оставить комментарий

  • (не будет показан)