Почнемо здалеку, щоб і новачкам був зрозумілий принцип роботи описуваного в статті файлу. Для функціонування сайту в Інтернеті потрібен не тільки комп'ютер і вихід до мережі, але і встановлене на нього спеціальне програмне забезпечення, яке забезпечує доступ до даних по протоколах 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. Наші пропозиції на виділені сервери підійдуть для будь-якого користувача. Якщо вас також цікавить покупка доменних імен. то замовляючи хостингові послуги, ви зможете відразу дізнатися, скільки коштує домен і хостинг.