Файл htaccess директиви, правила, як налаштувати редіректи, заборони

Почнемо здалеку, щоб і новачкам був зрозумілий принцип роботи описуваного в статті файлу. Для функціонування сайту в Інтернеті потрібен не тільки комп'ютер і вихід до мережі, але і встановлене на нього спеціальне програмне забезпечення, яке забезпечує доступ до даних по протоколах http і https. Таким програмним забезпеченням і є веб-сервер. Існують різні типи веб-серверів, але найпоширеніший - Apache. Він побудований на відкритому коді, надається безкоштовно, постійно доопрацьовується і поліпшується, сумісний з багатьма скриптами і працює майже на всіх платформах, включаючи Windows, Linux, Netware 5.x.

Налаштовується Apache через конфігураційні файли, які зберігаються в текстовому форматі. З їх допомогою можна задати певні правила дії веб-сервера. Головний конфігураційний файл називається httpd.conf або apache.conf (в залежності від дистрибутива ОС). У багатьох випадках все конфігурації сервера можна вказувати саме тут, і в основному такий спосіб краще, тому що:

а) зменшує час відповіді веб-сервера при запиті (так при кожному зверненні до веб-сервера Apache НЕ буде переглядати всі каталоги на наявність .htaccess); б) деякі директиви, наприклад директиви модуля mod_rewrite, у багатьох відношеннях працюють краще з головного конфігураційного файлу.

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

Що таке .htaccess і для чого він потрібен

Файл (або файли) .htaccess буде задавати правила роботи веб-сервера тільки в каталозі, де він розміщений, і його дочірніх каталогах, без глобальних змін роботи всього сервера. Можливість використовувати .htaccess прописується директивою (тобто командою) - AllowOverride - в головному файлі конфігурації httpd.conf, назва якої прямо говорить про те, що налаштування всередині .htaccess пріоритетні перед настройками в httpd.conf (якщо інше не обмежена все тієї ж директивою AllowOverride). За допомогою цієї директиви можна дозволити все, а можна - тільки деякі дії. Детальну інструкцію по його застосуванню можна знайти на сайті Apache.

З нею, при кожному зверненні до веб-сервера, Apache буде переглядати всі каталоги на наявність .htaccess. Зміни у файлі дійсні відразу після збереження - перезавантаження всього веб-сервера не потрібна (на відміну від змін в httpd.conf).

Файл .htaccess - загальноприйняте, але зовсім не обов'язкове. У httpd.conf можна задати інше ім'я за допомогою директиви AccessFileName. наприклад, так:

Як створити файл .htaccess

Файл - .htaccess (з точкою на початку);

тип - "Все файли";

формат перенесення за словами;

режим ASCII (при завантаженні .htaccess на хостинг по FTP-протоколу).

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

У Mac ОS файли, що починаються з точки, невидимі. Тому Ви можете назвати його інакше і після, перемістивши по FTP на хостинг, перейменувати. Зазвичай розміщують файл в кореневій директорії веб-сервера (/ public_html) або в кореневій директорії сайту (/public_html/site.com/).

синтаксис .htaccess

Можливості конфігураційного файлу величезні. Нижче наведено базові настройки в .htaccess.

можливості .htaccess

Контроль доступу

Заборона веб-доступу, крім IP:

Заборона веб-доступу для IP:

Заборона доступу до файлу:

Захист директорії за допомогою пароля:

Робота з помилками веб-сервера

Іноді замість очікуваної сторінки відвідувач може наштовхнутися на відповідь веб-сервера у вигляді помилки з лаконічним, але не завжди зрозумілим для простого користувача, щоб пояснити, чому. Повний список кодів стану можна знайти у Вікіпедії. Для найпоширеніших (наприклад, 404 або 500 помилки) бажано створити свою сторінку, яка краще виглядає і представляє відвідувачеві шляхи виходу. Здається вона наступним чином:

P.S. Користувачі послуги хостинг сайту від HOSTiQ.ua можуть скористатися для створення своєї сторінки функціоналом контрольної панелі cPanel (в розділі "Розширений" пункт "Сторінки помилок").

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

Для створення постійного перенаправлення використовується директива 301 редиректу, яка передає всю вагу сторінки на новий url (тому воно краще, ніж 302 редирект - в цілях SEO).

Перенаправлення всього сайту на новий домен:

Перенаправлення сторінки на нову:

Модуль перенаправлення mod rewrite

Незамінним механізмом для зміни URL-посилань "на льоту" є модуль mod_rewrite. Його корисність, а разом з тим, складність полягає в тому, що можна використовувати безліч правил, які включають ще більше змінних.

Для роботи модуля, перш за все потрібні директиви

RewriteEngine On (включає роботу механізму перетворення)

Options FollowSymLinks (умова для роботи mod_rewrite).

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

Однією з найбільш функціональних директив модуля mod_rewrite є RewriteRule. Для того, щоб вказати умову, за якої буде працювати правило, використовується директива RewriteCond. Вона (одна або кілька) обов'язково прописується перед RewriteRule.

Перенаправлення сторінки на новий домен:

Перенаправлення сайту з домену без www на домен з www:

Перенаправлення по протоколу HTTPS (попередньо потрібно встановити сертифікат HTTPS):

визначення кодування

Таблицю символів, в якій слід відкрити сайт, визначає браузер. Однак, можна задати кодування за замовчуванням:

Така зміна поширюється в межах дії .htaccess і на всі сторінки сайту. Можна задати кодування для певного типу файлу, наприклад windows-1251 для html:

Часто сама сторінка несе в собі (а саме в заголовку) інформацію про вашого засобу перевірки правопису. Потрібно перевірити, щоб запасне кодування в документі і в файлі конфігурації збігалися. Наведена тут utf-8 практично завжди потрібно при роботі популярних cms, так як вони розраховані на велике коло користувачів по всьому світу. До речі, за замовчуванням ця ж кодування налаштована і на наших серверах віртуального хостингу.

інші можливості

- Визначити індексний файл сайту:

За замовчуванням, індексного сторінкою вважається index.html. За допомогою наступної Директиви можна задати інше ім'я файлу, який відривається першим при зверненні до каталогу:

- Корисною директивою є FilesMatch, яка обумовлює межі дії правила за назвою файлу, використовуючи регулярні вирази. З її допомогою, наприклад, можна заборонити доступ до певних файлів:

Є деякі директиви, які не підтримуються на наших серверах з віртуальним хостингом, але ви можете їх вирішити на своєму ВПС, наприклад.

Причина в тому, що працює як suPHP веб-сервер не підтримує php_flag і php_value. Тому, ми пропонуємо використовувати сPanel (вкрай корисний підрозділ "Вибір версії РНР", для роботи з error_log - "Журнал помилок") або створити локальний файл php.ini для цієї мети. Пару директив ми все-таки привели нижче:

- Для того, щоб уникнути зависання веб-сервера при обробці некоректно написаних скриптів, існує max_execution_time. З її допомогою вказується час в секундах, відведений на обробку РНР-скрипта. Можна збільшити час очікування веб-сервера при виконанні скрипта:

- Визначити максимальний розмір файлу:

- Вивести помилки РНР в окремий файл:

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

Якщо .htaccess не працює

Перевірити роботу файлу можна, прописавши нескладні директиви, які при правильному синтаксисі і вірних налаштуваннях httpd (як описувалося на початку статті) повинні спрацювати:

- наприклад, заборонивши доступ до сайту ззовні за допомогою директиви

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

Якщо проблема дійсно існує, потрібно в першу чергу шукати причину в головному файлі конфігурації:

- перевірити, що створена запис VirtualHost для домену. В якості прикладу:

- назва файлу додаткової конфігурації вказано як Вам потрібно. Якщо це .htaccess, то:

І ще кілька порад по роботі з .htaccess

Вкрай бажано перед будь-яким редагуванням робити резервну копію файлу - щоб при гіршому результаті можна було "відкотити" зміни назад.

Рекомендуємо вносити зміни покроково, використовуючи мінімум директив - і в разі невдачі буде легше обчислити, яке саме правило викликало помилку.

Хоча зміни і відразу вступають в силу, кеш браузера ніхто не відміняв - для перевірки роботи сайту після редагування .htaccess, регулярно користуйтеся його очищенням або завантажуйте сторінку в обхід кеша - через комбінацію клавіш Ctrl + F5 (в Safari: Ctrl + R. в Mac OS: Cmd + R).

Найпоширеніша помилка веб-сервера при роботі з .htaccess - 500, і або вона вказує на проблему в синтаксисі (помилка в директиві, наприклад), або ж в головному конфігураційному файлі не дозволений такий тип директиви.

Корисні посилання

Краще джерело натхнення для роботи з .htaccess:

Багато інструкції по роботі з .htacess, російською:

Прості генератори директив для .htaccess:

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

Читайте також: