Налаштування файлу 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
Але ми також можемо дозволити доступ тільки з локальної мережі:
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, на випадок якщо модуль ще не активний:
Зазначимо, що в якості префікса для 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:
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]
Таким "же чином можна зробити переадресацію:
Редирект з http версії на https:
RewriteCond% {HTTP} = "on
RewriteRule ^ (. *) $ Https://site.ru/$1 [R = "301, L]
Налаштування "сторінок помилок в htaccess
При виникненні будь-яких помилок під час генерації сторінки, веб-сервер видає коротке повідомлення і код помилки. Але користувачам буде набагато зрозуміліше в чому справа, якщо ви зробите для кожної помилки окрему сторінку з картинками і повноцінним поясненням.
Налаштування htaccess для цього пункту буде дуже корисною. Ви можете використовувати директиву ErrorDocument. За допомогою неї можна задати html сторінки для помилок 4хх і 5хх. Наприклад, для 404:
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 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 типи файлів, які потрібно стиснути. наприклад:
Ви також можете зробити висновок конструкцію if, щоб перевірити чи підтримується цей модуль:
висновки
У цій статті ми розглянули як виконується настройка файлу htaccess для правильної роботи вашого сайту. Всі дії виконуються не так вже й складно. Досить скопіювати декілька рядків і виправити їх під свої потреби. Якщо у вас залишилися питання, питайте в коментарях!
На завершення пропоную відео з оглядом конфігураційного файлу Apache:
>
- Куди встановлюються програми в ubuntu
- Установка і настройка сервера apache
- Як зробити свій сервер для сайту
- Що краще nginx або apache 2016
- Як задати кодування в htaccess
- Як прибрати index.php з url
- Як створити файл .htaccess
- Як встановити сторінку 404
- Як налаштувати https-з`єднання?
- Як видалити / додати слеш в кінці url через .htaccess
- Обговорюється закриття проекту apache openoffice
- Налаштування завантажувача grub
- Використання directoryindex в .htaccess
- Лічильник звернень до файлів
- Налаштування часового поясу через htaccess
- Використання rewritecond в mod_rewrite
- Модулі apache
- Налаштування файлу php.ini
- Установка lamp в centos 7
- Установка nginx ubuntu 16.04
- Заборона доступу до файлів через mod_rewrite