Конфигурационный файл . htaccess - PowerPoint PPT Presentation

htaccess n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Конфигурационный файл . htaccess PowerPoint Presentation
Download Presentation
Конфигурационный файл . htaccess

play fullscreen
1 / 47
Конфигурационный файл . htaccess
246 Views
Download Presentation
mirra
Download Presentation

Конфигурационный файл . htaccess

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Конфигурационный файл .htaccess Лекция 8

  2. Web-сервер Apache • Apache – Web-сервер с открытым исходным кодом. Имеет гибкую конфигурацию.

  3. Особенности • .htaccess — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. • Файл .htaccess – расширение файла конфигурации httpd.conf. • Позволяет задавать множество параметров, включая: • Управляемый доступ к каталогам • Переназначение типов файлов

  4. Особенности • .htaccess действует только на ту директорию, в котором он расположен и на его дочерние каталоги • Может быть размещён в любом каталоге сайта

  5. Директивы перенаправления (редирект) Redirect/ http://www.example.com#http: //www.example.com - URL На который мы перенаправляем запросы

  6. Директивы простого перенаправления Redirect /linux http://www.linux.org Redirect /linux/download.html http://www.linux.org/download_info.html Redirect301 /kernel http://www.linux.org Теперь при наборе http://mysite.ru/linux будут открываться http://www.linux.org. В последнем примере Web-сервер будет передавать код 301, что означает «документ перемещен постоянно».

  7. Синтаксис Redirect Redirect [status] URL_LOCAL URL_REDIRECT status : необязательное поле, определяет код возврата, допустимые значения: • permanent (301 — документ перемещен постоянно) • temporarily (302 — документ перемещен временно) • seeother (303 — смотрите другой) • gone (410 — убран) URL_LOCAL – локальная часть URL запрашиваемого документа. URL_REDIRECT – URL куда должен быть выполнен редирект.

  8. Перенаправление с использованием регулярного выражения RedirectMatch301 (.*)\.html$ http://www.newdomain.com$1.php • К совпадениям в регулярном выражении можно обратиться через символ “$” и номеру совпадения. • Например $1 укажет на первое совпадение в шаблоне: (.*).

  9. Перенаправление с использованием регулярного выражения RedirectMatch301 /oldcart.php(.*) http://www.newdomain.com/newcart.php$1 • Пример перенаправления с одного файла скрипта на другой. • Все данные, переданные методом GET сохранятся в строке адреса.

  10. Директивы сложного перенаправления • Модуль mod_rewriteпредставляет собой основанный на правилах механизм (синтаксический анализатор с применением регулярных выражений), выполняющий URL преобразования на лету. • Перенаправление mod_rewriteосуществляются через заранее определённые правила.

  11. Директивы сложного перенаправления • Директива RewriteCond — определяет условие, при котором происходит преобразование. RewriteCond определяет условия для какого-либо правила. • Перед директивой RewriteRule располагаются одна или несколько директив RewriteCond. • Следующее за ними правило преобразования используется только тогда, когда URI соответствует условиям этой директивы и также условиям этих дополнительных директив.

  12. Обратная связь • Под обратной связью подразумевается использование частей сравниваемых URL для дальнейшего использования, т.е. как передачи параметров или для построения нового URL.

  13. Обратная связь

  14. Список переменных шаблона

  15. Список переменных шаблона

  16. Префиксы и флаги Можно предварять строку шаблона префиксами, которые указывают, что выражение: • '!ШаблонУсловия' — не соответствует шаблону • '<ШаблонУсловия' — лексически меньше • '>ШаблонУсловия' — лексически больше • '=ШаблонУсловия'— лексически равно • '-d'— является ли каталогом • '-f'— является ли обычным файлом • '-s'— является ли обычным файлом с ненулевым размером • '-l' — является ли символической ссылкой

  17. Пример использования RewriteCond%{REQUEST_FILENAME} -f[OR] RewriteCond%{REQUEST_URI} -d[OR] RewriteCond%{YEAR} =2015 • Проверяется, действительно ли существует запрашиваемый файл или действительно ли запрошенный URI является каталогом или действительно ли сейчас 2015-ый год.

  18. Включение mod_rewrite RewriteEngineon | off # По умолчанию RewriteEngine off • Включение и выключение работы механизма преобразования.

  19. Комбинирование условий в правилах RewriteEngineon RewriteCond %{REMOTE_HOST} ^mysubdomain1.* [OR] RewriteCond %{REMOTE_HOST} ^mysubdomain2.* [OR] RewriteCond %{REMOTE_HOST} ^mysubdomain3.* RewriteRule ^(.*)$ ^mysubdomain_public_html/ RewriteCond %{REMOTE_HOST} ^mysubdomain4.* RewriteRule ^(.*)$ ^mysubdomain4_public_html/ Для комбинирования условий могут быть использованы операторы ANDи OR.

  20. Правило для главной страницы под специфику браузера RewriteEngineon RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* RewriteRule ^/$ /homepage.max.html [L] RewriteCond %{HTTP_USER_AGENT} ^Lynx.* RewriteRule ^/$ /homepage.min.html [L] RewriteRule ^/$ /homepage.std.html [L]

  21. Разные сайты в зависимости от браузера RewriteEngineon RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* RewriteRule ^(.*)$ /mozilla/ [L] RewriteCond %{HTTP_USER_AGENT} ^Lynx.* RewriteRule ^(.*)$ /lynx/ [L] RewriteRule ^(.*)$ /default/ [L]

  22. Директива RewriteRule RewriteRule Шаблон Подстановка [flag] # flag - необязательное поле указывающее дополнительные опции, разделяется запятыми и обрамляется квадратными скобками.

  23. Дополнительные опции

  24. Пример 1 • Запрет посещений сайта поисковым роботом Google: RewriteEngineon RewriteCond%{USER_AGENT}GooglebotRewriteRule .*-[F] # Другой вариант возвращает вместо ошибки 403 (FORBIDDEN) ошибку 404 (NOT_FOUND) RewriteCond%{USER_AGENT}GooglebotRewriteRule .*-[R=404]

  25. Пример 2 Запрет на посещение сайта в рабочее время: RewriteEngine on RewriteCond%{TIME_HOUR}%{TIME_MIN}>900 RewriteCond%{TIME_HOUR}%{TIME_MIN}<1800 RewriteRule.*-[F]

  26. Пример 3 • Запрет на встраивание картинок из внешних страниц: RewriteEngineon RewriteBase/img/ RewriteCond%{HTTP_REFERER} !^$ RewriteRule\.(jpe?g|gif|png)$ - [F]

  27. Пример 4 • В связи с неоднозначностью написания расширения файлов *.html и *.htm, некоторые пользователи могут написать расширение не так. Их можно перенаправить: RewriteEngineon RewriteBase / RewriteRule^(.*)\.htm$ .html [R=permanent]

  28. Индексный файл • Индексный файл — это файл главной страницы папки на сайте, то есть тот файл, который загружается, когда посетитель обращается напрямую к какой-либо директории (в т.ч. и к корню сайта).

  29. Индексные страницы • Когда пользователь заходит на хост, например, http://mati.ru,принято, что открывается индексный файл index.* при его отсутствии – либосодержимое каталога, либо ошибку 403 (Запрещено) если опция отключена – запрещен просмотр директорий.

  30. Индексные страницы • В случае, если индексного файла в каталоге сервера нет и включена опция Indexes, будет выведен список файлов в данной директории. • Пример на http://mati.su • Включение опции: Options +Indexes

  31. Индексные страницы # Запрет выдачи листинга каталогабез индексного файла Options-Indexes # При включённом индексе исключить некоторые файлы из листинга директории: IndexIgnore*.php* *.pl

  32. Индексные страницы # Список индексных файлов задаётся в порядке приоритета DirectoryIndexindex.html index.shtml index.pl index.cgiindex.php # Можно указать любые имена файлов DirectoryIndexhtaccess.php/cgi-bin/index.pl

  33. Обработка ошибок # содержание файла .htaccess: ErrorDocument404error/404.htm ErrorDocument403error/403.htm ErrorDocument400error/400.htm ErrorDocument500error/500.htm # в случае ошибки "Forbidden" показывается текстовое # сообщение, котороеобязательно должно начинаться с # кавычки, кавычка в сообщении не выводится: ErrorDocument403 "Sorry can't allow you access today, 403 Status Codes Apache"

  34. Кодировка • В HTML: <metahttp-equiv="content-type"content="text/html; charset=Windows-1251"> • Через .htaccess: AddDefaultCharsetUTF-8

  35. Управление доступом Order [Deny,Allow] | [Allow,Deny] # Поумолчанию Deny,Allow # Т.е. будут выполнены сначала# правила запрета доступа, а потом # разрешения

  36. Разрешить доступ всем OrderAllow, DenyAllowfrom allDenyfrom 81.222.144.12 81.222.144.20 # Сначала выполнится правило # разрешения доступа всем, а потом – # запрета конкретным IP-адресам

  37. Запретить доступ всем OrderDeny, AllowDenyfrom allAllowfrom 81.222.144.12 81.222.144.20 # Обратная ситуация: доступ# запрещён всем, кроме отдельных # IP-адресов

  38. Запрет на доступ к отдельным файлам <Files "passwd.html"> Order Deny,Allow Denyfrom all Allowfrom 81.222.144.12 </Files>

  39. Запрет на доступ к отдельным файлам # Можно использовать регулярное # выражение для указания группы # файлов <Files "\.(key)$"> Order Deny,Allow Denyfrom all Allowfrom 81.222.144.12 </Files>

  40. Паролирование директорий AuthName"Achtung! Uwaga! Attention! Protected area!" AuthTypeBasic AuthUserFile/home/pavel/.authfile requirevalid-user

  41. Паролирование директорий

  42. Генерирование файла с паролями • Параметр AuthUserFileуказывает имя файла с паролями для аутентификации пользователей (пароли в этом файле будут шифрованными). Путь к файлу с паролями задается относительно корня веб-сервера.

  43. Генерирование файла с паролями [pavel@mati.su]~# htpasswdUsage:htpasswd[-cmdps] passwordfile usernamehtpasswd -b[cmdps] passwordfile username password  -c Create a new file.

  44. Генерирование файла с паролями [pavel@mati.su]~ # htpasswd -c authfile test1New password:Re-type new passwordAdding password for user test1 Генерирование пароля для пользователя test1 в файл “authfile”.

  45. Полезные ссылки • http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html • http://beget.ru/art_htaccess • http://beget.ru/art10

  46. Лабораторная работа • Создать перенаправление на постоянной основе с использованием регулярного выражения со всех файлов index.php5, index.php4, index.php3 на index.php • Создать собственные страницы 403 (запрещено), 404 (не найдено) и 401 (требуется авторизация). • Создать сложное перенаправление у URL следующего вида: http://yoursite.ru/2014/04/01/newsна http://yoursite.ru/index.php?year=2014&month=04&day=01&article=news • Создать перенаправление для всех файлов вида picN.jpg на picture.jpg (должен реально существовать), где N – число от 0 до 999. Если запрашиваемый файл действительно существует, запретить к нему доступ.

  47. Лабораторная работа • Создать перенаправление для IP-адреса. • Если IP-адрес принадлежит локальной сети (начинается на 192.168.), то перенаправить пользователя на страницу local.html • Если иное, то на страницу all.html • Создать директорию на сервере и разрешить доступ к ней только из локальной сетис маской 255.255.0.0. • Если доступ осуществляется из локальной сети, запрашивать пароль. • Разрешить в данной директории индексы, но запретить отображение всех файлов с расширениями *.php, *.html, *.htm