• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

FREEHOST.WIKI

htaccess – що це?

Стаття також доступна російською (перейти до перегляду).

Файл htaccess – файл конфігурації веб-сервера Apache рівня каталогу. Він містить набір інструкцій, що обумовлюють принципи роботи програмного забезпечення Apache в рамках поточного каталогу та дочірніх папок без внесення змін до загальних налаштувань веб-сервера.

Для простоти розуміння розглянемо основні принципи роботи веб-застосунків у рамках протоколів http і https (наприклад, звичайні сайти). Сам сайт є у найпростішому вигляді сукупність контенту та програмного коду. Останній використовується як логіка доступу до контенту. Тобто це набір мультимедійних (зображення, аудіо, відео) файлів, а також текстових файлів, що містять код. Всі ці файли записують до певного каталогу комп'ютера, який називають сервером.

Проте однієї програмної логіки самого сайту недостатньо для взаємодії з ним. На серверах зберігаються відразу кілька веб-додатків, і для одночасної та безперебійної роботи кожного з них потрібно ПО вищого рівня, яке бере на себе завдання з управління одразу всіма запитами, що надходять від клієнтів (звичайних користувачів інтернету). Як таке ПЗ виступає Apache.

Цей популярний веб-сервер поставляється у вигляді програмного забезпечення з відкритими вихідними кодами і забезпечує можливість внесення тонких налаштувань у його функціонал за допомогою різних конфігураційних файлів. htaccess – це один із таких файлів. Він виконує такі основні функції:

  1. Перевизначення директив (команд, що обумовлюють принципи роботи веб-сервера), що зберігаються в основному конфігураційному файлі – httpd.conf, для локальних потреб (для певного каталогу).Налаштування інтерпретатора PHP (деякі важливі функції).
  2. Використання для обмеження доступу до деяких каталогів.
  3. Вибір кодування символів.
  4. Заміна складних URL на простіші та зрозуміліші (ЛЗУ).
  5. Вказівка ??директив простого, складного перенаправлення при навігації по сайту та багато іншого.

Зміст:

Створення файлу

Це звичайний текстовий файл, тому може бути створений у найпростішому текстовому редакторі (наприклад, Блокнот у Windows). При створенні враховують деякі правила щодо особливостей найменування, кодування та іншого:

  1. Як ім'я вказують “.htaccess” (на початку слова повинен обов'язково бути символ «.», регістр має значення, тому малі літери не допускаються).
  2. При виборі типу файлу вказують "Всі файли".
  3. Для зручності написання директив слід вибрати формат перенесення за словами.
  4. Як кодування використовують ASCII.

При створенні файлу htaccess на комп'ютері з MacOS слід упустити точку на початку назви, щоб файл був видимим у системі. Після переміщення файлу на веб-сервер його можна перейменувати відповідно до вимог. Цей конфігураційний сайт може перебувати в кореневій директорії сервера (/public_html) або веб-додатки (/public_html/site_name.net). Налаштування зроблені у файлі .htaccess поширюються на каталог, в якому розміщено файл і всі піддиректорії. Завантажити файл зі свого комп'ютера на сервер можна за допомогою клієнта FTP (див. Довідка по роботі з FTP).

Особливості синтаксису директив

Синтаксиси кодів, що використовуються для конфігурування httpd.conf та .htaccess, повністю збігаються. Тут також передбачено можливість коментування з використанням символу "#", текст після якого не розглядається сервером як інструкція. Це зручно для пояснення та вимкнення деяких директив без необхідності їх повного видалення з файлу.

Управління доступом за допомогою htaccess

Щоб повністю заборонити веб-доступ, вводяться такі команди:

Order Deny,
AllowDeny from all

Якщо як виняток потрібно дозволити доступ для певного IP, до вказаних вище рядків додають команду “allow from 192.168.0.1” (де 192.168.0.1 – потрібна адреса).

Для встановлення заборони доступу до певного файлу вводять наступні інструкції:

<Files private.html>
	Order Allow,Deny
	Deny from all
</Files>

Будь-яка директорія може бути захищена з використанням пароля:

AuthType BasicAuthName "ім'я_захищеної_директорії"
AuthUserFile /home/cpanel_user/.htpasswds/public_html/smth/passwdrequire valid-user

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

Все про htaccess – основні можливості

Правильне налаштування файлу htaccess дозволяє вносити деякі зміни до роботи веб-сервера без отримання адміністративних прав. Керувати директивами основного конфігураційного файлу (httpd.conf) можуть лише адміністратори.

Під час обробки запитів веб-сервер може генерувати коди різних помилок. Наприклад, якщо введена URL-адреса посилається на неіснуючу сторінку, Apache відправить код, який може бути незрозумілий рядовому користувачеві. При розробці веб-застосунків створюють окремі сторінки з поясненнями помилок (наприклад, «Помилка 404 – сторінки не існує»). Щоб організувати процес автоматичного перенаправлення на цю сторінку, використовують таку директиву у файлі htaccess:

ErrorDocument 404 http://website.net/error/404.html

Деякі хостинг-провайдери спрощують процес створення сторінок помилок та організації перенаправлення. Наприклад, на нашому віртуальному хостингу сторінки помилок встановлюються за допомогою панелі керування.

Щоб вказати в htaccess перенаправлення на файл сторінки сайту, використовують директиву 301. Ця директива має наступний синтаксис:

Redirect 301 /some_page.html http://website.net/some_another_page.html

Якщо потрібно виконати перенаправлення на новий домен (актуально, наприклад, якщо сайт був перенесений, а частина відвідувачів звикли використовувати старе доменне ім'я), вводять таку директиву:

Redirect 301 / http://www.new_website_domain.net/

Що стосується редиректу, деякі розробники виконують htaccess 404 редирект, тобто перенаправлення, наприклад, на головну сторінку веб-ресурсу у разі отримання запиту на неіснуючу сторінку. З погляду SEO цей підхід вважається некоректним.

Модуль mod_rewrite

Це один з найчастіше використовуваних модулів Apache. Його основне завдання полягає в динамічній заміні вхідних URL-адрес з урахуванням правил, заданих з використанням двох директив. Наприклад, модуль часто використовують для перенаправлення з одного URL на інше, використання більш зрозумілих URL (ЛЗУ).

Наприклад, досить поширене явище (якщо звернути увагу на адресний рядок веб-браузера) – складні URL-адреси, що складаються з різних символів. Наприклад: http://website.net/v123/cat56/77/12 або http://website.net/index.php?cat=23&subcat=2&id=127.

Прикладом ЧЗУ є http://website.net/shop/product/apple.

Apache веде логи помилок, які використовуються для отримання відомостей про ту чи іншу проблему. Модуль mod_rewrite веде окремий лог, у якому зберігаються всі перетворення, які над URL. Для налаштування логів передбачено директиву LogLevel.

Для включення аналізованого модуля файл htaccess вводять директиву: RewriteEngine on.

Директива RewriteRule – що це?

Для встановлення правил перезапису URL використовують директиву RewriteRule. Вона має наступний типовий варіант синтаксису:

RewriteRule шаблон_URL підставляний_URL [додаткові_дії]

Як шаблон вказують регулярне вираження. URL-адресою може бути вказаний шлях до каталогу або файлу у файловій системі, абсолютний або відносний URL, а також символ «-», наявність якого свідчить про відсутність виконання будь-якої заміни URL.

mod_rewrite забезпечує можливість часткової заміни.

Директива rewriteCond – що це таке?

Це друга важлива директива модуля, що дозволяє задати спосіб пошуку збігів: за іменем хоста (%{HTTP_HOST}), по рядку запиту

(%{QUERY_STRING}), по порту (%{SERVER_PORT}).

Один із найпоширеніших випадків використання модуля – організація перенаправлення з http на https:

RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

htaccess - кодування сторінок та керування доступом

Веб-браузер містить функціонал визначення кодування сторінок. У конфігураційному файлі кодування може бути задане за замовчуванням за допомогою директиви:

AddDefaultCharset ANCII

Якщо необхідно встановити кодування для файлів з певним розширенням (наприклад, html), htaccess записують:

AddType "application/x-httpd-php3; charset=windows-1251" .html

Раціонально використовувати кодування UTF-8, оскільки воно є найбільш поширеним у світі і є кодуванням за замовчуванням у більшості CMS.

Для встановлення заборони доступу до деяких файлів використовують директиву FilesMatch. Наприклад, якщо необхідно закрити доступ до файлів певних розширень, htaccess вводять наступні рядки:

<FilesMatch "\.(htaccess|htpasswd|html|txt|psd|log|sh)$>
Order Allow,Deny
Deny from all
</FilesMatch>

Внесення змін до налаштувань PHP

З зрозумілих причин htaccess не надає доступу до всіх налаштувань інтерпретатора PHP. Однак, за допомогою цього конфігураційного файлу встановлюють два важливі параметри:

  1. Тривалість очікування виконання скрипту (php_value max_execution_time_time_time);
  2. Максимальний обсяг файлів, що завантажуються в Мб (php_value upload_max_filesize размір_файлаM).

Крім того, можна вказати окремий файл для записів про помилки PHP за допомогою директиви php_value error_log.

Висновки

Файл htaccess використовується для зручності настроювання параметрів роботи веб-сервера для кожного проекту (сайту) з множини, що працюють в рамках одного фізичного сервера. З його допомогою можна керувати правами доступу, виконувати перенаправлення, покращувати читабельність URL, вносити зміни до налаштувань PHP та багато іншого. Переважний варіант для власників масштабних проектів, що вимагають внесення тонких налаштувань до httpd.conf, - виділений сервер.
Якщо Ви редагуєте існуючий файл .htaccess, обов'язково зробіть його резервну копію перед початком роботи. Якщо після внесення змін до файлу Ви отримуєте помилку сервера 500, це означає, що htaccess була допущена помилка, або використовується заборонена директива.

Статті на тему:

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

Купити веб-хостинг

 

ІНШІ СТАТТІ ЗА ТЕМОЮ

Дякуємо, що обираєте FREEhost.UA