Налаштування файлу htaccess

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

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

Налаштування файлу htaccess дуже схожа на настройку головного файлу конфігурації Apache. Але вона трохи відрізняється. За допомогою цього файлу ви можете налаштувати редіректи, внутрішня зміна url, права доступу, автентифікацію за паролем і багато іншого. У сьогоднішній статті ми розглянемо як правильно налаштувати htaccess для вашого сервера.

Синтаксис файлу htaccess

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

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

Загальний синтаксис директив дуже простий, це пари команд і їх опцій, розділених пропуском, наприклад:

команда параметр1 параметр2 прапори

Самих команд досить багато і ми будемо розглядати їх на прикладах дій, які вони виконують. Крім самих команд, тут можуть використовуватися вкладені структури, наприклад, для активації модулів або перевірки доступності того чи іншого модуля. А тепер давайте перейдемо ближче до того як виконується правильна настройка htaccess. Почнемо з найпростіших дій.

Налаштування доступу htaccess

Досить часто htaccess використовується для управління доступом до папки. Для управління доступом використовуються три команди:

  • order - порядок;
  • deny - заборонити;
  • allow - дозволити.

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

Потім за допомогою директиви allow або deny ми дозволяємо або забороняємо доступ до папки з певних адрес. Наприклад, щоб заборонити всі необхідно додати в htaccess:


Deny from all

Але ми також можемо дозволити доступ тільки з локальної мережі:

Order deny, allow
Deny from all
Allow 192.168.0.

Якщо вказано deny, allow, то перевірка буде виконуватися в такому порядку. Спочатку все директиви deny, потім все директиви allow, і якщо жодна з умов не підійшло, то запит пропускается.Прі allow, deny такий запит буде за замовчуванням відхилений. Наприклад, попередній приклад можна написати так:


Allow 192.168.0.

Модифікація URL в htaccess




Найбільш часто htaccess використовується для модифікації URL під час виконання або редиректів. За цю функціональність відповідає модуль mod_rewrite і зазвичай він активований в більшості конфігурацій Apache.

Модифікація URL в htacces виконується за допомогою трьох директив, це RewriteBase, яка вказує префікс адреси, RewriteCond перевіряє відповідність, і RewriteRule - змінює URL відповідно до регулярним виразом якщо все правила відповідності підходять.

Спочатку потрібно включити Mod_Rewrite, на випадок якщо модуль ще не активний:

RewriteEngine on

Зазначимо, що в якості префікса для URL потрібно використовувати корінь:

RewriteRule index.html /index.php

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

  • ^ - початок рядка;
  • $ - кінець рядка;
  • . - будь-який символ;
  • * - будь-яку кількість будь-яких символів;
  • ? - один певний символ;
  • [0-9] - послідовність символів, наприклад, від 0 до 9;
  • | - символ або, вибирається або одна група, або інша;
  • () - іcпользуется, щоб вибрати одержувачів символів.

У регулярних виразах htaccess також можна використовувати змінні з даними, отриманими з заголовків запиту, наприклад:

  • % {HTTP_USER_AGENT} - поле User-Agent, яке передає браузер користувача;
  • % {REMOTE_ADDR} - IP адреса користувача;
  • % {REQUEST_URI} - запитуваний URI;
  • % {QUERY_STRING} - параметри запиту після знака?.

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


RewriteBase /;
RewriteRule ^ (. *) . Html $ $ 1.php


Директива RewriteCond дає ще більше гнучкості, ви можете вибрати до яких адресах варто застосовувати модифікацію, наприклад, будемо перевизначати дані тільки для версії з www:

RewriteBase /;
RewriteCond% {REMOTE_HOST} ^ site.ru $
RewriteRule ^ (. *) . Html $ $ 1.php

Таким чином, ви можете виконувати будь-які перетворення ваших URL без фактичних редиректів куди-небудь. Але далі ми розглянемо як робити редіректи.

Налаштування редиректів в htaccess

Налаштування редиректів htaccess виконується схожим чином, за допомогою того ж самого модуля mod_rewrite, тільки тепер замість модифікації url ми вказуємо прапор з потрібним дією і кодом редиректу.

Найпростіший редирект можна виконати без mod_rewrite, за допомогою такого рядка:

RewriteCond% {HTTP_HOST} ^ site .ru $ [NC]
RewriteRule ^ (. *) $ Http://site.ru/$1 [R = 301, L]

Значення R = 301 означає код редиректу, який буде повернений клієнтові, можна використовувати 301, 302 і т д. Редірект htaccess з домену www на домен без префікса буде виглядати так:


RewriteRule ^ (. *) $ Http://site.ru/$1 [R = "301, L]

Таким "же чином можна зробити переадресацію:

RewriteRule ^ старий_адрес / новий_адрес / $ 1 [R = 301, L]

Редирект з http версії на https:


RewriteCond% {HTTP} = "onRewriteRule ^ (. *) $ Https://site.ru/$1 [R = "301, L]

Налаштування "сторінок помилок в htaccess

При виникненні будь-яких помилок під час генерації сторінки, веб-сервер видає коротке повідомлення і код помилки. Але користувачам буде набагато зрозуміліше в чому справа, якщо ви зробите для кожної помилки окрему сторінку з картинками і повноцінним поясненням.

Налаштування htaccess для цього пункту буде дуже корисною. Ви можете використовувати директиву ErrorDocument. За допомогою неї можна задати html сторінки для помилок 4хх і 5хх. Наприклад, для 404:

ErrorDocument 404 https://site.ru/error/404.shtml
ErrorDocument 403 https://site.ru/error/403.shtml
ErrorDocument 401 https://site.ru/error/401.shtml
ErrorDocument 500 https://site.ru/error/500.shtml

Кешування в htaccess

Браузер дозволяє зберігати в своєму кеші зображення, файли скриптів, стилів і інші мультимедійні дані певний час. Час життя кешу задається веб-сервером за допомогою спеціальних заголовків. Їх можна налаштувати за допомогою модуля expires.

Спочатку активуємо модуль і встановлюємо період кешування за замовчуванням:


ExpiresDefault "access plus 1 month"

Тепер ми можемо налаштувати кешування для кожного mime типу файлів:

ExpiresByType text / html "access plus 1 month 15 days 2 hours"
ExpiresByType image / gif "access plus 5 hours 3 minutes"
ExpiresByType image / x-icon "access plus 2592000 seconds"

У першому рядку ми вказуємо, що сторінки html потрібно вважати придатними на один місяць 15 днів і дві години з моменту завантаження. Доступні такі типи файлів:

  • image / x-icon;
  • image / jpeg;
  • image / png;
  • image / gif;
  • application / x-shockwave-flash;
  • text / css;
  • text / jаvascript;
  • application / jаvascript;
  • application / x-jаvascript;
  • text / html;
  • application / xhtml + xml;

Щоб бути впевненим що ця конструкція не викличе помилок укладіть її в if:


Стиснення файлів в htaccess

Для стиснення в Apache можна використовувати модуль deflate. Тут досить просто перерахувати mime типи файлів, які потрібно стиснути. наприклад:

AddOutputFilterByType DEFLATE text / html text / plain text / xml application / xml application / xhtml + xml text / css text / jаvascript application / jаvascript application / x-jаvascript

Ви також можете зробити висновок конструкцію if, щоб перевірити чи підтримується цей модуль:


висновки

У цій статті ми розглянули як виконується настройка файлу htaccess для правильної роботи вашого сайту. Всі дії виконуються не так вже й складно. Досить скопіювати декілька рядків і виправити їх під свої потреби. Якщо у вас залишилися питання, питайте в коментарях!

На завершення пропоную відео з оглядом конфігураційного файлу Apache:

>
Поділися в соціальних мережах:

Схожі
Використання rewritecond в mod_rewriteВикористання rewritecond в mod_rewrite
Налаштування часового поясу через htaccessНалаштування часового поясу через htaccess
Використання directoryindex в .htaccessВикористання directoryindex в .htaccess
Що краще nginx або apache 2016Що краще nginx або apache 2016
Установка nginx ubuntu 16.04Установка nginx ubuntu 16.04
Як створити файл .htaccessЯк створити файл .htaccess
Налаштування сайту на joomlaНалаштування сайту на joomla
Обговорюється закриття проекту apache openofficeОбговорюється закриття проекту apache openoffice
Як зробити свій сервер для сайтуЯк зробити свій сервер для сайту
Як налаштувати https-з`єднання?Як налаштувати https-з`єднання?
» » Налаштування файлу htaccess