Редирект Htaccess і його налаштування

10 0 Новини високих технологій

Файли .htaccess можуть знаходитися в кореневому каталозі сайту (наприклад, /home/user/sitename/) або його вкладених каталогах. Вони використовуються для організації перенаправлення («редіректу») відвідувачів з одного домену або документа на вашому веб-сервері на інший. Кожен файл .htaccess містить набір правил (директив), згідно з якими веб-сервер перенаправляє користувача на ту чи іншу сторінку. Багато системи управління контентом беруть налаштування редіректу сайту .htaccess. Ви можете редагувати файли, створені вашої CMS, вводячи нові директиви перенаправлення, або створювати свої власні файли .htaccess вручну.


Редирект Htaccess і його налаштування

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

Першим етапом налаштування редіректу .htaccess є, власне, створення самого файлу. Ваш .htaccess повинен бути простим текстовим файлом. Це означає, що вам потрібно створити його в програмі для редагування тексту, здатної генерувати файли plain text (.txt).
  • На комп'ютері з Windows, ви можете використовувати "Блокнот", який є однією з вбудованих стандартних програм.
  • На Mac ви можете використовувати TextEdit. Спочатку ви повинні відкрити меню «Налаштування» в TextEdit і в розділі «Новий документ» вибрати «Простий текст». Після цього ви можете почати процес створення нового текстового документа TextEdit для вашого файлу .htaccess.
  • На Linux ви можете використовувати будь-який з численних текстових редакторів, доступних для вашого дистрибутива – як консольних (vi, nano), так і графічних (наприклад, gedit).
  • При збереженні документа обов'язково назвіть його htaccess.txt. Якщо ви збережете його просто як .htaccess, ваш комп'ютер приховає файл. Це відбувається тому, що файли, починаються з крапки, вважаються системними файлами.


    Завантаження файлу .htaccess на сервер

    Для коректного редіректу .htaccess файл повинен бути завантажений саме в той каталог на сервері, для якого ви хочете встановити настройки перенаправлення. Як правило, це ваш каталог HTML-файлів (/var/www/vhosts/example.com/httpdocs/), хоча ви можете завантажити його і в будь-який підкаталог на вашому сервері. Як тільки файл буде завантажено, перейменуйте його безпосередньо .htaccess. На цьому етапі файл може стати невидимим для вашого FTP-клієнта, оскільки тепер він має формат системного файлу. Багато FTP клієнти дозволяють переглядати приховані файли і папки – рекомендується включити цю функцію. Для отримання інструкцій щодо її включенню зверніться до документації свого клієнта.

    Перевіряємо роботу .htaccess

    Найбільш простим способом перевірити, чи обробляє веб-сервер ваш файл .htaccess, є його навмисне пошкодження. Відредагуйте файл .htaccess таким чином, щоб перший рядок починалася зі слова Test: Test # Встановити головну сторінку DirectoryIndex page.html page.txt Тепер, якщо ви перезавантажте головну сторінку свого сайту, ви побачите наступну помилку (на фото нижче).
    Редирект Htaccess і його налаштування
    Якщо ця помилка з'являється, то це, насправді, добре - значить сервер обробляє ваш файл і читає з нього директиви переадресації. Якщо ні, переконайтеся, що файл і каталог, в якому він знаходиться, доступні для читання і при необхідності змініть права доступу.

    Трохи про пріоритети редіректу .htaccess

    Правила .htaccess є рекурсивними. Тобто директиви, написані у файлі /home/user/sitename_html/.htaccess будуть застосовуватися і до цього каталогу, і до його дочірнім папок - за винятком випадків, якщо якесь конкретне правило скасовується з допомогою директиви у файлі .htaccess, що знаходиться в дочірньому каталозі. Таким чином, налаштування редіректу через .htaccess, що задаються файлом на більш високому рівні, перевизначаються параметрами файлів, що знаходяться на більш низьких рівнях. Наприклад, якщо ви хочете включити перенаправлення для більшої частини вашого сайту, але вимкнути його для певного каталогу, ви можете сформувати окремий .htaccess з відповідними налаштуваннями і завантажити його тільки в цей каталог. Аналогічним чином файли .htaccess нижнього рівня перевизначають налаштування PHP файлах vhost.conf і php.ini на більш високих рівнях, якщо тільки перевизначення явно не заборонено для цих файлів. Нарешті, порядок прямування правил редіректу .htaccess в файлі може мати значення для певних типів директив. Список правил обробляється послідовно від початку до кінця; директиви на початку файлу будуть виконані першими.
    Редирект Htaccess і його налаштування

    Редирект .htaccess: основні види

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

    301: редирект на постійній основі

    Це найбільш поширений тип переадресації і, швидше за все, саме той, який ви будете найчастіше налаштовувати. У файлі .htaccess 301 редирект сторінки вказує, що її старий URL-адресу (перенаправляемый URL-адресу) більше не використовується.

    302: тимчасовий редирект

    Редирект 302 вказує, що старий URL-адресу сторінки тимчасово відключений, але буде відновлений найближчим часом. Для сервера Apache це правило перенаправлення використовується за замовчуванням.
    Таким чином, перед тим як налаштовувати редирект .htaccess, потрібно визначитися, постійним або тимчасовим буде перенаправлення. Для прикладів у даній статті ми будемо використовувати редирект 301.
    Редирект Htaccess і його налаштування

    Приклади сценаріїв перенаправлення

    Нижче наведені найбільш поширені приклади редіректу .htaccess. Для того щоб використовувати будь-який з них, необхідно відкрити створений вами файл .htaccess будь-яким текстовим редактором і внести в нього необхідний приклад коду. Код заробив, в веб-сервері Apache повинен бути включений модуль перезапису (mod_rewrite). Для цього потрібно виконати ряд дій залежно від вашій ОС. На Windows зробіть наступне:
  • Знайдіть і відкрийте файл .http.conf. Він знаходиться в каталозі, який ви встановили Apache.
  • Створіть резервну копію http.conf, щоб у разі потреби відновити файл, якщо ви допустите якісь помилки.
  • Знайдіть у файлі рядок #LoadModule rewrite_module modules/mod_rewrite.so і розкоментуйте його (заберіть знак #).
  • Знайдіть блок, укладений теги і замініть його на Options All AllowOverride All .
  • Відшукайте всі згадки "AllowOverride None" і скрізь замініть їх на "AllowOverride All".
  • Перезапустіть веб-сервер і браузер.
  • На Linux достатньо виконати в терміналі: sudo a2enmod rewrite Ця команда запустить модуль або видасть повідомлення про те, що модуль вже запущений. Щоб привести в дію нові зміни, перезапустіть Apache командою у терміналі: sudo service apache2 restart
    Редирект Htaccess і його налаштування
    Тепер ми можемо приступити до редагування файлу .htaccess і вивчення найбільш поширених директив перенаправлення. 1. Редірект з однієї сторінки на іншу .htaccess: Redirect 301 /retiredpage.html http://www.example.com/newpage.html 2. Переадресація папки (з усім вмістом): RedirectMatch 301 ^/olddir/http://www.yourdomain.com/newdir/ 3. Редирект сторінки .htaccess з видаленням WWW: RewriteEngine On RewriteCond %{HTTP_HOST} ^www.sitename.com$[NC] RewriteRule ^(.*)$ http://sitename.com/$1[L,R=301] 4. Перенаправлення з додаванням WWW: RewriteEngine On RewriteCond %{HTTP_HOST} !^www.samplehost.com$[NC] RewriteRule ^(.*)$ http://www.samplehost.com/$1[L,R=301] 5. Редірект на інший домен .htaccess (перенесення сайту цілком): RedirectMatch 301 ^(.*)$ http://www.yoursite.com 6 .htaccess-редирект файлів HTML на PHP-файли: RedirectMatch 301 (.*).html$ http://www.examplesite.com$1.php 7. Переадресація сторінок з додаванням HTTPS: RewriteCond %{HTTPS} off RewriteRule (.*) https://%{SERVER_NAME}/$1[R=permanent,L] 8. Замінити всі букви в URL-адресі на малі: RewriteMap lc int:tolower Даний фрагмент коду необхідно додати в httpd.conf вашого веб-сервера. Після цього потрібно відкрити файл .htaccess і внести: RewriteEngine On RewriteCond %{REQUEST_URI}[A-Z] RewriteRule . ${lc:%{REQUEST_URI}}[R=301,L] 9. Використання регулярних виразів. Правила редіректу часто містять символи, які складаються в регулярні вирази. Завдяки цьому сервер точно знає, що ви хочете змінити в URL. Однак регулярні вирази можуть бути складними для розуміння з першого погляду. Ось деякі загальні елементи, які ви можете побачити і використовувати в своїх правилах перезапису URL, а також конкретні приклади їх використання:
  • ^ : початок замінної рядка;
  • $ : кінець замінної рядка.
  • Приклад: регулярний вираз ^folder1$ дає сигнал знайти і замінити текст «folder1» всередині посилання.
  • . : будь-який символ, який не є пропуском (наприклад, a, B, 3);
  • * : вказує, що передує текст може повторюватися необмежену кількість разів;
  • Приклад: регулярний вираз ^uploads.*$ дозволяє замінити текст «uploads2009», «uploads2010» і так далі; Регулярний вираз ^.*$ позначає «знайти що завгодно». Воно корисно в тому випадку, якщо ви не знаєте, що користувач може ввести в тексті URL.
  • () : виділяють фрагмент тексту, який повинен бути використаний в правилі в якості значення змінної $1. Це необхідно, наприклад, для обробки запитів до файлів, які повинні бути однаковими і для старого, і для нової версії URL.
  • Редирект Htaccess і його налаштування

    Помилка 404 Not Found

    Іноді відбувається так, що при налаштуванні перенаправлення виникають помилки. Розглянемо основні причини, чому може не працювати редирект .htaccess. Поширеною є помилка 404 Not Found, що виникає при переадресації. У цьому випадку необхідно уважно вивчити URL, сформовану в адресному рядку. Існує потрібний файл у новому місці на сервері, заданому правилом переадресації? Вам може знадобитися скопіювати файли з вашого старого розташування в нове місце, або зробити правило перенаправлення більш широким, щоб у разі відсутності потрібного файлу за посиланням відбувалося перенаправлення на головну сторінку сайту. Якщо URL-адреса просто невірний (наприклад, http://example.com/folder1//file.html - зверніть увагу на два слеша), вам потрібно переглянути синтаксис правила переадресування.

    Нескінченний URL, таймаут або цикл

    Якщо формується перенаправлення URL-адресу занадто довгий, або сторінка занадто довго не завантажується, або ваш браузер дає повідомлення про помилку перенаправлення, швидше за все, декілька правил переадресування конфліктують між собою. Потрібно перевірити весь файл .htaccess на предмет правил переадресації, які можуть збігатися з іншими правилами. Вам також може знадобитися перевірити файли .htaccess в підкаталогах. Зверніть увагу, що FTP не буде показувати файли .htaccess, якщо ви не включили можливість перегляду прихованих файлів і папок. Крім того, можна включати перенаправлення всередині HTML і PHP-сторінок. Перевірте сторінку, з якої відбувається проблема, на предмет внутрішніх переадресацій. Додавання [L] правила перенаправлення може допомогти в деяких випадках, оскільки цей прапор командує серверу припинити спроби перенаправлення URL-адреси після застосування правила.

    Як зробити редирект без .htaccess

    Редирект Htaccess і його налаштування
    На закінчення розглянемо, як зробити перенаправлення URL-адреси без редагування файлу .htaccess, використовуючи віртуальний хост сервера Apache. До речі кажучи, цей метод простіший, ніж складання правил редіректу сторінки .htaccess. Відкрийте текстовим редактором конфігураційний файл vhost (httpd.conf), який зазвичай розташовується в каталозі /etc/apache2/sites/sitename. Виділений фрагмент зразка файлу демонструє перенаправлення: ServerName www.mysite.com ServerAlias www.mysite.com Redirect /http://mysite.com Конфігурація, наведена вище, перенаправляє всі запити на домен без субдомену WWW. Щоб перенаправити всі запити на домен з субдоменом WWW, змініть конфігурацію, як показано нижче. ServerName anywebsite.com ServerAlias anywebsite.com Redirect /http://www.anywebsite.com Перезавантажте Apache, і сайт почне правильно перенаправлятися. Вищенаведений спосіб є найбільш простим, і його легше здійснити, ніж редирект з однієї сторінки на іншу в htaccess.