Освоюємо можливості файлу ". Htaccess"

Сьогодні ми познайомимося з можливостями файлу ". Htaccess". Ми розглянемо, навіщо потрібен цей файл і які можливості може відкрити його правильне використання. А в тому, що ці можливості великі – ви зараз переконаєтеся.


Навіщо потрібен файл ". Htaccess".


Перш ніж почати, дозвольте поставити вам одне запитання: Якої самий популярний веб сервер?


За відповіддю далеко ходити не треба. Звичайно ж це – Apache. Цей безкоштовний сервер встановлений на переважній більшості серверів в інтернет.


Якщо ваш хостинг (як вибрати правильний хостинг дивись тут і тут) розташований на UNIX / Linux системі, то з імовірністю 99% на ньому встановлений веб-сервер Apache. У Windows світі Apache поширений куди менше через сильного конкурента Microsoft IIS. Однак, Apache чудово працює і на Windows машинах, поступово завойовуючи популярність. Не кажучи вже про те, що для тестування сайтів локально практично всі веб майстри ставлять собі Apache, а не "важенний" IIS.


Отже, самий популярний веб-сервер – це Apache. Одним з найбільш вагомих переваг цього сервера (крім безкоштовності, швидкості і невеликого споживання ресурсів) є гнучкість настройки.


У Apache веб-майстер може зробити практично все, що завгодно. Створити власні сторінки помилок, заборонити доступ до певних файлів і папок, змінити обробку файлів (наприклад, обробляти. Html файли як скрипти написані на Perl) і багато іншого.


Все це (і багато іншого) можна налаштувати через спеціальний конфігураційний файл Apache – "httpd.conf".


Правда, є одне але: цей файл глобальний для всього сервера. А що робити якщо хочеться встановити спеціальні налаштування тільки для конкретної директорії?


Зрозуміло вихід є. У файлі "httpd.conf" передбачено завдання директив тільки для певної директорії. Але тут є проблема. Навіть дві.


1. Для того, що б зміни вступили в силу необхідно перезавантажити (рестартовать) Apache сервер.
2. Для будь-яких (навіть невинних) змін, потрібно редагувати критичний для всього сервера файл.


Творці Apache, зрозуміло, не могли залишити це питання без вирішення. І вирішили вони його, на мій погляд, дуже просто і елегантно. Зустрічайте – герой нашої статті – файл “.htaccess”.


Отже, замість того, щоб кожен раз редагувати файл httpd.conf, можна поступити наступним чином. У директорії, для якої хочете змінити налаштування Apache по-замовчуванню, створіть файл ". Htaccess". Далі в цьому файлі помістіть всі налаштування, які необхідно застосовувати для поточної директорії.


Просто, як і все геніальне. Директиви з файлу ". Htaccess" мають більш високий пріоритет, ніж визначені у глобальному конфігураційному файлі httpd.conf.


Даний підхід дає власникам сайтів можливість управляти параметрами сервера тільки для їх директорій, не турбуючи адміністраторів сервера.


Можливо ви вже потираєте руки, передчуваючи, як ви тепер попустувати. Не поспішайте з висновками. Для того, що б файл ". Htaccess" запрацював, адміністратори веб-сервера повинні явно дозволити це у файлі httpd.conf. Це досягається наступної директивою:


AllowOverride <список параметрів, які дозволено міняти>

Таким чином, адміністратор цілком може заборонити вам міняти, якщо не всі, то деякі з параметрів через ". Htaccess". Дозволити змінювати будь-які параметри можна ось так:


AllowOverride All

Заборонити зміни параметрів через ". Htaccess" зовсім, можна ось так:


AllowOverride None

Врахуйте, що наведені вище директиви повинні бути у файлі "httpd.conf".


Можливості файлу ". Htaccess"


1. Дозволити або заборонити доступ до файлів з певної IP адреси.


Припустимо, що ви створили прототип веб сайту і вирішили показати його своєму другу / замовнику. Ваше природне бажання, що б відкрити даний сайт міг тільки ця людина і ніхто інший. Цього можна домогтися, помістивши наступні директиви у файл ". htaccess":


order allow,deny


deny from all


allow from <xxx.xxx.xxx.xxx>


allow from googlebot.com



Як бачите, можна вказати дозвіл на перегляд ресурсу або по IP адресою, або по доменному імені. У прикладі файли дозволено переглядати роботу Google, який приходить з доменного імені googlebot.com.


Можливо вказівку декількох IP адрес через пробіл. Також можливо вказувати лише честь IP адреси. Наприклад, для того, що б дозволити бачити ваш сайт усім з локальної мережі, потрібно написати щось подібне: allow from 192.168


Те ж саме можна зробити, якщо ви хочете заборонити будь-кому перегляд вашого сайту. Результат повинен виглядати ось так:


order deny,allow


allow from all


deny from 192.168.35.111


deny from googlebot.com



2. Заборона або дозвіл доступу до певних файлів.


Заборона і дозвіл доступу до файлів в директорії – це прекрасно. Однак, що якщо необхідно закрити доступ не до всіх, а тільки в певних файлів у директорії? Для цього існує директива Files, яка дозволяє задати файли до яких будуть застосовуватися вкладені директиви. Розглянемо кілька прикладів:


<Files “test.php”>


  order allow,deny


  deny from all


</Files>



Дана конструкція забороняє доступ тільки до одного файлу: test.php


<Files “*.inc.php”>


  order allow,deny


  deny from all


</Files>



А цей приклад забороняє доступ до файлів із закінченням:. Inc.php


У виразах можна використовувати символи: * – для будь-якій послідовності будь-яких символів,? – Для одного будь-якого символу.


Так само існує директива (FilesMatch), що дозволяє задавати збіг імен файлів через регулярне вираження. Якщо ви не знаєте, що таке регулярний вираз, то можете подивитися тут.


За допомогою регулярних виразів наш попередній приклад можна записати от так:


<FilesMatch “inc.php$”>


  order allow,deny


  deny from all


</FilesMatch>



Як бачите, нам уже не потрібний знак * на початку (регулярні вирази по-замовчуванню шукають підрядок). Але тепер ми повинні явно вказати на те, що ім'я файлу повинна закінчуватися на inc.php. Знак $ і служить для вказівки на те, що inc.php повинно бути в кінці рядка.


Регулярні вирази – це дуже потужний інструмент, що дозволяє задати досить складні шаблони збігів. Однак не варто ними захоплюватися. Їх обробка вимагає від сервера на порядок більше обчислювальних ресурсів. Тому, намагайтеся уникати їх використання.


Хочу звернути вашу увагу на одні факт. Заборона звернення до файлу / файлів здійснюється тільки для протоколу http. З скриптів, які виконуються на сервері, ви завжди може читати всі "закриті" файли.


3. Організація перенаправлення (редіректу).


За допомогою файлу ". Htaccess" можна організувати перенаправлення користувача, якщо це необхідно.


Припустимо, що необхідно зробити так, щоб при доступі до файлу www.site.ru / xxx.html користувач перенаправлявся б на сторінку www.site.ru / yyy.html. Зробити це можна так:


Redirect 301 /xxx.html http://www.site.ru/yyy.html

Цифра 301 вказує серверу, який редірект використовувати. 301 – постійний редирект. 302 – тимчасовий. Постійний – використовується якщо сторінка була переміщена назавжди. Тимчасовий – якщо сторінка лише тимчасово недоступна (наприклад, сайт знаходиться на стадії).


Якщо необхідно перенаправити відразу список файлів, відповідних деякої масці, то використовується ось така конструкція:


RedirectMatch 301 /test(.*) http://www.site.ru/$1

Дана конструкція буде перенаправляти запити до сторінок, які починаються зі слова test на сторінку без слова test спочатку. Наприклад, при доступі до http://www.site.ru/test_1.html користувач буде перенаправлено на сторінку http://www.site.ru/_1.html


$ 1 позначає все те, що відповідає вираженню в скобці (у нашому випадку – це будь-яку кількість будь-яких символів).


4. Завдання кодування сторінки.


За допомогою файлу ". Htaccess" можна задати кодування сторінки. Після цього сервер сам буде повідомляти браузеру про кодуванні і вам не буде потрібно вставляти в код сторінки мета тег:


<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Задати кодування можна так:


AddDefaultCharset windows-1251

Цю директиву можна застосовувати всередині FilesMatch блоку, тобто задати кодування тільки для певних файлів, що іноді може бути дуже корисно.


5. Відображення скриптів в браузері.


Якщо ви хочете примусити сервер відобразити, наприклад, perl або python скрипт в браузері замість того, що б виконати його, то використовуйте наступну директиву:


RemoveHandler cgi-script .pl .py .php

Для скриптів на PHP даний метод буде працювати, тільки якщо PHP встановлений як cgi (про види установки PHP я розповім в одному з найближчих випусків розсилки). Якщо ж PHP встановлений як модуль Apache (mod_php), то необхідно застосувати інший метод:


AddType text/html .php

6. Власні сторінки помилок.


Іноді трапляються різні помилки, і тоді сервер відправляє користувачу якусь сторінку з помилкою за замовчуванням. Зазвичай це проста напис про помилку на білому тлі. Для того, що б ваші користувачі побачили красиву сторінку з помилкою, з вашим власним дизайном і текстом, слід використовувати таку директиву:


ErrorDocument <код_ошібкі> / error.php

Тут "код_ошібкі" – код помилки, у відповідь на яку буде видана дана сторінка. Повний список кодів помилок ви можете подивитися тут. Наприклад, для того що б при зверненні до неіснуючої сторінці вашого сайту (помилка 404) користувач був переадресований на сторінку 404.php потрібно написати наступне:


ErrorDocument <404> /404.php

Можливості файлу ". Htaccess" дуже великі і навіть на просте їх перерахування займе обсяг невеликої книги. Подальше вивчення цього питання я надаю вам самостійно.


Висновки


У статті були розглянуті можливості, які дає веб-дизайнеру файл ". Htaccess". Сподіваюся, що після прочитання, ви зможете ефективно використовувати цей, без сумніву, корисний інструмент у своїх проектах.


Ну і наостанок рада. Обробка файлу ". Htaccess" забирає ресурси у веб-сервера. І чим більше і складніше цей файл влаштований, тим більше ресурсів на його обробку витрачає сервер. Причому витрачає ці ресурси, при кожному запиті до директорії. Звідси правило: використовуйте файли ". Htaccess" тільки якщо це дійсно необхідно. В іншому випадку, ви просто витратите частина продуктивності сервері на необов'язкові дії. Будьте помірковані. У всьому:).

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*