В тази статия ще разгледаме основните принципи за използване на файла .htaccess, който е от решаващо значение за подобряване на SEO. Този файл гарантира правилното индексиране на страниците от търсачките. Ще се научим как да управляваме пренасочванията, да конфигурираме сигурността и да повишаваме производителността. Освен това ще предоставим съвети как да конфигурирате този файл независимо.
Защо е необходим .htaccess
Файлът .htaccess действа като вид "дистанционно управление" за уеб разработчиците на сървърите на Apache. Той предлага удобни инструменти за настройка на различни параметри и управление на поведението на уебсайт. Когато директният достъп до основните конфигурационни файлове на сървъра е недостъпен (както често се случва с виртуалния хостинг, например), .htaccess се превръща в полезен инструмент за извършване на необходимите промени.
Htaccess често се намира в основната папка на вашия сайт или в тези папки, където е необходима специална конфигурация. Например, ако използвате WordPress, конфигурацията може да се извърши чрез плъгина Yoast SEO, който обсъдихме в статията за Конфигуриране на robots.txt. В други случаи е достатъчно да отидете в желаната папка и да редактирате съществуващия файл .htaccess или да го създадете, ако все още не е създаден.
Конфигуриране на файла .htaccess
301 Пренасочване на htaccess
Пренасочване 301 във файла .htaccess може да се оприличи на постоянно пренасочване на уебсайт. Той информира търсачките и браузърите, че страницата вече е постоянно разположена на нов адрес и предлага актуализиране на отметки и индексиране. Такова пренасочване обикновено се използва, когато дадена страница бъде преместена или изтрита, за да се запази нейното класиране в резултатите от търсенето и да се пренасочат посетителите към новото местоположение.
За да активирате пренасочванията, трябва да активирате съответната команда във файла .htaccess:
RewriteEngine on
След това можете да конфигурирате най-простата форма на пренасочване:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Подобно пренасочване с помощта на Пренасочване Постоянно директивата изглежда така:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Това са най-лесните за конфигуриране методи за пренасочване. Нека разгледаме конфигурация, която използва други, по-разширени типове пренасочвания с mod_rewrite модул:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
302 пренасочване .htaccess, което показва временно преместване, се среща много по-рядко. Ето пример за такава настройка:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Директива ErrorDocument
Тази настройка ви позволява да контролирате какво вижда потребителят, когато възникнат HTTP грешки на вашия сайт. Вместо стандартното съобщение за грешка, можете да покажете своя собствена страница, която ще бъде по-информативна за посетителя и ще му помогне да разбере какво се е случило. Просто следвайте този синтаксис за употреба:
ErrorDocument <error_code> <URL_page>
Например,
ErrorDocument 404 /errors/not_found.html
Означава, че когато a 404 възниква грешка, страницата на /errors/not_found.html ще бъдат отворени. Абсолютните URL адреси се определят по подобен начин:
ErrorDocument 500 http://example.com/errors/server_error.html
Този пример показва показването на сървър_грешка.html страница в http://example.com/errors/ в случай на a 500 грешка.
Отказ на достъп до директория на сайта
Файлът .htaccess има командата Отказ от всички, което помага за отказ на достъп до определени папки или файлове на вашия уеб сървър. Това може да бъде полезно, ако искате да скриете лична информация или важни файлове от посетителите на сайта, за да гарантирате сигурността на данните.
За да деактивирате списъка (преглед на всички налични директории), трябва да добавите реда:
Options -Indexes
Пример за блокиране на достъпа до конкретна директория изглежда така:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
По същия начин можете да откажете достъп до един файл:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Или за набор от файлове по разширение:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Блокиране на достъпа по IP
Блокирането на достъпа чрез IP във файла .htaccess е метод, който ви позволява да ограничите достъпа до уебсайта си за конкретни IP адреси или техните групи. Това може да бъде полезно, ако искате да предотвратите достъпа до вашия сайт или неговите специфични части за определени хора или нежелани ботове.
Блокирането на един IP адрес става с командата:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Блокирането на няколко IP адреса се извършва по подобен начин чрез дублиране на "Отказ от" ред с необходимите адреси.
За блокиране на диапазон от IP адреси:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
За да разрешите достъп само за определени IP адреси, добавете кода:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
За пълен отказ на достъп използвайте директивата Отказ от всички, а за блокиране на адреси по маска посочете Отказ от 11.22.
Където, 11.22 е IP адресът маска.
Блокиране на посетители от User-Agent
Блокирането на потребители от User-Agent във файла .htaccess е метод за контролиране кой има достъп до вашия уеб сървър въз основа на информация за браузъра, който посетителят използва. Низът User-Agent съдържа данни за браузъра, който човек използва, за да взаимодейства с вашия сървър, и благодарение на тази информация можете да ограничите достъпа за определени потребители.
Най-често срещаният начин за блокиране от User-Agent е да използвате mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
В този пример:
- RewriteCond %{HTTP_USER_AGENT} се използва за проверка на низа на User-Agent.
- ^Bot1, ^Bot2, ^Bot3 са примери за низове на User-Agent, които искаме да блокираме. Модификаторите NC показват, че сравнението трябва да е без значение за малки и големи букви.
- RewriteRule ^.*$ - [F,L] се прилага към заявката, ако някое от условията на RewriteCond е изпълнено. Той изпраща отговор с кода за състояние 403 Забранено (F) и спира обработката на правила (L).
Кеширане в htaccess
Конфигурирането на кеширане чрез файла .htaccess помага за ускоряване на вашия сайт, като го кара да се зарежда по-бързо за потребителите. Работи по следния начин: определени файлове, като изображения, CSS стилове и JavaScript скриптове, се съхраняват в кеша на браузъра на потребителя след първото зареждане. Сега браузърът може да използва тези файлове от кеша, вместо да ги презарежда от сървъра всеки път, когато потребителят посети страница. Това намалява времето за зареждане и подобрява производителността на сайта.
Помислете за пример:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
От друга страна, за ресурси, които се актуализират често, е необходимо да деактивирате кеширането:
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
Оптимизиране на ефективността на сайта
- mod_deflate намлява mod_gzip модулите в Apache помагат за компресиране на информация, която сървърът изпраща до устройствата на потребителите. Това прави файловете по-малки по размер, което от своя страна ускорява зареждането на страницата. Въпреки това е важно да запомните, че поддръжката и конфигурацията на тези модули може да варира в зависимост от вашия сървър.
Пример за използване на mod_deflate модул:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Пример за mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
Обсъдихме най-често използваните директиви. Можете да се запознаете с всички възможности на файла в официални документи.
Как да проверите функционалността на файла .htaccess
За да проверите дали вашият .htaccess файл работи на сайта, можете да изпълните следните стъпки:
- Умишлено променете .htaccess файла с грешка. В отговор сървърът трябва да даде грешка. Този метод показва дали операцията на файла обикновено се прилага на сървъра.
- Проверете функционалността на конкретни промени, които сте направили. Например, направете малка корекция на един от параметрите и оценете наличието на промени.
- Проверете кода на състоянието на страницата, ако промените са свързани с отговора на сървъра. Как да направите това, описахме по-рано в статията HTTP кодове за грешки: пълен списък на сървърни грешки.
- Обърнете се към регистрационните файлове на сървъра. Те показват всички грешки, свързани с работата на файла .htaccess.
- Провеждайте тестове с помощта на онлайн услуги или инструменти.
Важно е да разберете, че за да проверите функционалността на файла .htaccess, не е необходимо да изпълнявате всички стъпки наведнъж. Достатъчно е да изберете най-подходящия метод от списъка и да го използвате.
Заключение
Конфигурирането на файла .htaccess е важна стъпка в оптимизирането и защитата на вашия Apache сървър. Проучихме как този файл помага за управление на пренасочвания, компресиране на съдържание и осигуряване на сигурност. След като овладеете работата с .htaccess, вие получавате мощен инструмент за подобряване на производителността и функционалността на уебсайтовете.