Hostings.info
Локації хостингуАМЕРИКА Найкращі компаніїСШАКанада ЄВРОПАХостинг УкраїниВелика БританіяНідерландиНімеччинаФранціяАЗІЯНайкращі компаніїІндіяПакистанСінгапурФіліппіниГонконгІндонезіяМалайзіяАФРИКА Найкращі компаніїПівденна Африка НігеріяРейтингиТИП ХОСТИНГУ Реєстратори доменів Віртуальний хостингVPS/VDSВиділені сервери Хмарний хостинг ХОСТИНГ ДЛЯ Електронна комерціяІгриВеб-сайти для дорослих Вебсайт портфоліо Блог Корпоративний вебсайт Веб-порталЦІНА ХОСТИНГУ Дешевий хостингСпіввідношення ціни та якості Дорогий хостинг Дешевий VPS хостинг Безкоштовний хостинг ІНШЕ WordPress Криптовалюта Захищений хостинг WindowsLinux Екологічний хостингКонструктор сайтів ВідгукиТОПОВІ ХОСТИНГИHostingerhosting.comBluehostFastCometKamateraРЕЄСТРАТОРИ ДОМЕНІВ DreamHostHostGator1&1 IONOSWeb.com ResellerclubКОНСТРУКТОРИ САЙТІВGoDaddyWixWeeblyJimdoWebliumПорадникКонсультант (для новачків) Порівняти хостинги Виберіть тарифний план Запитання - Відповідь Домени Домен .UAКупониПромокоди UltaHostПромокоди CloudwaysПромокоди Name.comПромокоди HostGatorEnglishУкраїнськаSpanish
Школа
...
Що таке .htaccess

.htaccess

Анна Бєлоус
Анна Бєлоус
Експерт з хостингу(досвід роботи 11 років )
2512
7 хвилина

Що таке .htaccess?

Файл .htaccess (hypertext access) використовується як один із засобів для простої та зручної конфігурації веб-сервера Apache. Таким чином, зміна налаштувань веб-сервера дозволить змінити роботу сайту. htaccess зазвичай розташований у кореневому каталозі та впливає на всі його підкаталоги та сайт. Якщо в іншому каталозі є інший файл .htaccess, він буде впливати лише на цей каталог та його підкаталоги.

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

Де знаходиться файл .htaccess?

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

Ви можете редагувати файл на своєму комп'ютері за допомогою будь-якого текстового редактора, хоча ми радимо Notepad++ для уникнення будь-яких проблем.

Як перевірити, чи працює .htaccess?

Просто введіть будь-яке випадкове слово в перший рядок тексту файлу, збережіть його та замініть той, що зараз на сервері. Якщо сайт все ще працює у звичайному режимі - .htaccess не працює. Якщо ви отримуєте Внутрішню помилку сервера 500, веб-сервер не зміг обробити команду (випадкове слово). Це підтвердить, що файл .htaccess зараз працює. Щоб повернути сайт у робочий стан, просто видаліть випадкове слово.

Ми розглянемо корисні функції файлу далі.

  1. Перенаправлення між сторінками або сайтами+зміна URL
  2. Обробка помилок
  3. Налаштування безпеки сайту
  4. Кодування сторінок сайту
  5. Оптимізація сайту
  6. Налаштування PHP

Правильне налаштування 301 перенаправлення за допомогою файлу .htaccess

Примітка! Якщо ви хочете, щоб ваше перенаправлення працювало, переконайтеся, що ви ввели ‘RewriteEngine On’ перед рядками, наведеними нижче.

RewriteEngine On

301 Перенаправлення на іншу сторінку або сайт

Введіть наступні рядки у файл .htaccess:

Redirect 301 /oldpage.html http://website.com/newpage.html

або

RedirectPermanent /oldpage.html http://website.com/newpage.html

301 Перенаправлення з www піддомену на домен або перенаправлення з www.site.com на ваш site.com

Наприклад, з http://www.site.com на http://site.com. Це досить корисно і часто використовується в SEO

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

Зворотне перенаправлення з адреси без ‘www’ на адресу з ‘www’

Перенаправлення з http://site.com на http://www.site.com (ми не радимо використовувати це)

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Перенаправлення всіх користувачів зі старого сайту на новий

Redirect 301 / http://newsite.com/

Як додати .html в кінці URL?

Якщо ви хочете, щоб користувач був перенаправлений на site.com/page.html, коли він вводить site.com/page або site.com/page/, введіть наступний текст у файл .htaccess:

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Як видалити .html в кінці URL?

Зворотне перенаправлення з site.com/page.html на site.com/page

RewriteBase /
RewriteRule (.*)\.html$ $1 [R=301,L]

Як видалити косу риску в кінці URL?

Наприклад, site.com/page/ на site.com/page

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

301 Перенаправлення з одного розділу сайту в інший

Перенаправлення всіх сторінок з одного розділу сайту site.com/section-1/section-2/page в інший site.com/section-1/page

RewriteRule ^blog/random/(.*)$ http://site.com/blog/$1 [R=permanent,L]

301 Перенаправлення при зміні доменного імені

Наступні рядки, введені у файл .htaccess, перенаправлять користувачів з кожної конкретної сторінки старого сайту на відповідну на новому сайті. Наприклад, щоб перенаправити oldsite.com/page на newsite.com/page

RewriteCond %{HTTP_HOST} ^www.oldsite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^test.oldsite.com$ [NC]
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]

Редагування сторінки помилки через .htaccess

Коли користувач завантажує сайт (відправляє запит на сервер хостера), сервер повертає відповідь з кодом. Коди 1-399 означають, що сервер працює належним чином, а 400-599 означають помилку сервера (ось наша стаття про коди помилок сервера).

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

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

osibka-404-1-thumb.pngЩоб відобразити вашу власну сторінку помилки замість стандартної, вам потрібно створити окрему сторінку (наприклад, http://yoursite.com/404.html) і додати відповідний код у файл .htaccess. Ось кілька прикладів коду, які ви можете додати:

ErrorDocument 400 http://yoursite.com/400.html
ErrorDocument 404 http://yoursite.com/404.html
ErrorDocument 500 http://yoursite.com/500.html

Якщо ви хочете іншу сторінку замість 403 Помилка (доступ заборонено), вам також потрібно написати текстове повідомлення, яке буде відображатися, наприклад:

ErrorDocument 403 "Вибачте, не можу дозволити вам доступ сьогодні, побачимося пізніше алігатор :)"

Налаштування безпеки сайту через файл .htaccess

Файл .htaccess надає деякі можливості для покращення безпеки сайту. Ось найпопулярніші з них:

Захист вашого сайту від ін'єкцій скриптів

#Включає відстеження сим (символьних) посилань
Options +FollowSymLinks
#Запускає url_rewriting
RewriteEngine On
#Блокує всі посилання, що містять <script>
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#Блокує всі скрипти, що намагаються змінити змінні PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#Блокує всі скрипти, що намагаються змінити змінну _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#Перенаправляє всі подібні спроби на сторінку помилки 403 – заборонено
RewriteRule ^(.*)$ index.php [F,L]

Це налаштування швидше є компонентом безпеки сайту, ніж 100% гарантією.

Захист від крадіжки зображень

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

Options +FollowSymlinks
#Блокує крадіжку зображень
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?yoursite.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://yoursite.com/images/stop_stealing.gif[nc]

Обмеження доступу за IP-адресою

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

#Введення IP для блокування таким чином
allow from all
deny from 164.186.15.116
deny from 124.153.34.144

Блокування всіх IP, крім довірених

Щоб заблокувати доступ до вашого сайту з усіх IP, крім певних, вам потрібно додати наступний код:

#Обмежує доступ для всіх, крім перерахованих
ErrorDocument 403 http://www.yoursite.com
Order deny,allow
Deny from all
Allow from 164.186.15.116
Allow from 124.153.34.144

Обмеження доступу до конкретної папки

#Обмежує перегляд вмісту конкретної папки
Options All -Indexes

Обмеження доступу до конкретного файлу

#Захищає файл myfile.txt
<files myfile.txt>
order allow,deny
deny from all
</files>

Обмеження доступу до всіх файлів з певним розширенням

Наприклад, щоб обмежити доступ до всіх .txt файлів, вам потрібно ввести наступне:

<Files "\.(txt)$">
Order Deny,Allow
Deny from all
</Files>

Блокування непотрібних користувацьких агентів

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

#Блокує всі користувацькі агенти, перераховані нижче
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
<limit get="" post="" head="">
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>

Зміна кодування сайту через .htaccess

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

  • UTF-8 - універсальне двобайтове кодування
  • Windows-1251 - кирилиця (Windows)
  • cp866 – кирилиця (DOS)
  • Windows-1250 – Центральна Європа (Windows)
  • Windows-1252 – Західна Європа (Windows)

Кодування також має бути вказане в мета-тезі кожної сторінки, щоб браузер знав, яке кодування використовується для створення сторінки:

<meta http-equiv="content-type" content="text/html; charset=Windows-1251">

Якщо вищезгаданий мета-тег не додано, ви можете повідомити браузеру про кодування вашого сайту за допомогою файлу .htaccess:

AddDefaultCharset WINDOWS-1251

У випадку, якщо і мета-тег, і .htaccess працюють, важливо, щоб кодування збігалося.

Також можливо, щоб сервер автоматично кодував всі файли, додані до нього, додавши цей рядок:

CharsetSourceEnc WINDOWS-1251

Щоб вимкнути цю функцію, потрібно ввести:

CharsetDisable on

Оптимізація сайту через .htaccess

Стиснення файлів за допомогою gZip

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

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file \.js$
mod_gzip_item_include file \.css$ </ifmodule>
</IfModule>

або

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>

або

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

Як покращити кешування сайту на сервері?

Покращене кешування дозволяє витягувати дані з ПК користувача замість завантаження їх з сервера кожного разу (зображення, основні елементи дизайну тощо), які користувач вже завантажив, коли вперше зайшов на сайт. Таким чином, для кожного конкретного користувача, другий і кожен наступний раз, коли він заходить на сайт, він завантажуватиметься швидше, а навантаження на ваш сервер значно зменшиться. Покращене кешування можна увімкнути, ввівши один з двох кодів нижче. Спробуйте кожен і перевірте швидкість тут. Ми будемо дуже вдячні за коментар з вашим досвідом щодо ефективності кожного.

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
</IfModule>

або

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>

TTL (Time to Live) - це конкретне налаштування, яке дозволяє встановити часовий проміжок для кожного шматка даних, щоб залишатися в кеші. Після закінчення цього встановленого часу дані будуть видалені, і буде виконано новий запит. Ви можете встановити TTL для файлів на комп'ютері користувача в рядку “access plus …”. Після закінчення терміну дії ці файли будуть завантажені знову, коли користувач зайде на сайт. Вважається, що оптимальними є часові проміжки від 7 днів до 1 місяця, але іноді вони налаштовуються до 1 року.

Зміна індексної сторінки сайту

Коли користувач завантажує ваш сайт, index.html або index.php - це перша сторінка, яка завантажується. Щоб змінити сторінку, додайте цей код у файл .htaccess (тепер mypage.php буде завантажуватися першим):

DirectoryIndex about.html

Налаштування PHP через .htaccess

Примітка! Використання будь-яких директив для налаштування PHP залежить від версії PHP, встановленої на сервері, та обмежень хостингової компанії. Тому, якщо директива не спрацювала або її використання викликало помилку сайту (і ви впевнені, що вона була використана правильно), можливо, вам варто звернутися до технічної підтримки хостингової компанії та уточнити причину виникнення помилки та способи її виправлення.

Файл php.ini містить всі налаштування PHP. Однак деякі з цих налаштувань можна налаштувати у файлі .htaccess. Ви повинні використовувати php_flag для булевих значень (true/false) і php_value для цифрових значень. Ось правила для них:

php_flag directive1 VALUE1
php_value directive2 VALUE2

Де VALUE 1 може бути on, off, 1 або 0 (1 і on означають увімкнення, 0 і off - вимкнення);

VALUE2 - це будь-яке цифрове або рядкове значення, яке підходить для конкретної директиви;

directive1 (використовується тільки з php_flag) може мати такі значення:

magic_quotes_gpc

- функція magic_quotes_gpc увімкнена/вимкнена

php_flag magic_quotes_gpc on

Примітка!Ця директива вважається застарілою і була вимкнена для версій PHP 5.4.0 і вище.

display_startup_errors

- відображення помилок PHP увімкнено/вимкнено

php_flag display_startup_errors 1

display_errors

- відображення помилок у браузері увімкнено/вимкнено

php_flag display_errors 1

output_buffering

- буферизація вихідних даних увімкнена/вимкнена

>php_flag output_buffering on

register_globals

- глобальні змінні увімкнені/вимкнені

php_flag register_globals on

engine

- виконання PHP у папці .htaccess та підпапках увімкнено/вимкнено

php_flag engine off

directive2 (використовується тільки з php_value) може мати такі значення:

upload_max_filesize

- встановлює максимальний розмір для завантажених файлів

php_value upload_max_filesize 10M

user_agent

- встановлює значення user_agent, передане сервером

php_value user_agent “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”

post_max_size

- встановлює максимальний розмір відправленої пошти

php_value post_max_size 10M

mysql.default_user

- встановлює ім'я для користувача бази даних

php_value mysql.default_user databaseuser

mysql.default_password

- встановлює пароль для користувача бази даних

php_value mysql.default_password jk323jh4g

mysql.default_host

- встановлює ім'я хоста для бази даних (зазвичай це localhost)

php_value mysql.default_host localhost

sendmail_from

- встановлює адресу для відправки електронної пошти за допомогою PHP php_value sendmail_from

php_value sendmail_from

auto_prepend_file

- встановлює файл, який буде додано на початку кожного PHP скрипту

php_value auto_prepend_file /www/publiс_html/myfile.php

auto_append_file

- встановлює файл, який буде додано в кінці кожного PHP скрипту

php_value auto_append_file /www/publiс_html/myfile.php

Примітка! Не всі хостингові компанії дозволяють вносити зміни в налаштування PHP через .htaccess. Ми радимо уточнити це питання з технічною підтримкою.

Деякі поради щодо роботи з .htaccess

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

Хостинг-провайдер може обмежити або замінити деякі директиви в залежності від версії Apache.

Наприклад, деякі хостинг-провайдери забороняють використовувати функцію ‘strtoupper’, яка перетворює рядок у верхній регістр, оскільки це значно збільшує навантаження на веб-сервер.

Ви можете також перевірити наступні директиви:

Options +FollowSymLinks може бути замінено на Options +SymLinksifOwnerMatch
Options All-Indexes може бути замінено на Options-Indexes

Деякі директиви можуть не використовуватися певною версією Apache, тому їх слід видалити або закоментувати.

Ви можете закоментувати директиву, поставивши # на початку рядка.

Через це ми настійно рекомендуємо вивчити доступні директиви для налаштування файлу .htaccess. Це допоможе уникнути повідомлення про помилку, пов'язане з .htaccess, замість завантаженого сайту.

Немає відповіді на ваше запитання?

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

Наші експерти

наш експерт  Нікола Наус
Нікола Наус
наш експерт  Олівер Сало
Олівер Сало
наш експерт  Ласло Ковач
Ласло Ковач
наш експерт  Максим Малачілі
Максим Малачілі
наш експерт  Олег Харітінов
Олег Харітінов
наш експерт  Pavan Nikam
Pavan Nikam
наш експерт  Md Billal Hossain Sarker
Md Billal Hossain Sarker
наш експерт  Зіон Овелле
Зіон Овелле
наш експерт  Банко Стоянов
Банко Стоянов

37 експертів готові допомогти вам зробити правильний вибір

Рейтинги Провайдерів Хостингу за Категоріями