Во оваа статија, ќе ги истражиме основните принципи за користење на датотеката .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>
Пренасочување .htaccess 302, што укажува на привремено преместување, се среќава многу поретко. Еве пример за таква поставка:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Документ за грешка во директивата
Оваа поставка ви овозможува да контролирате што гледа корисникот кога ќе се појават грешки во HTTP на вашата страница. Наместо стандардната порака за грешка, можете да прикажете своја страница, која ќе биде поинформативна за посетителот и ќе му помогне да разбере што се случило. Едноставно следете ја оваа синтакса за употреба:
ErrorDocument <error_code> <URL_page>
На пример,
ErrorDocument 404 /errors/not_found.html
Значи дека кога А 404 се појавува грешка, страницата на /errors/not_found.html ќе се отвори. Апсолутните URL-адреси се наведени слично:
ErrorDocument 500 http://example.com/errors/server_error.html
Овој пример го покажува прикажувањето на server_error.html страница на http://example.com/errors/ во случај на а 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 адресата маскираат.
Блокирање на посетители од кориснички агент
Блокирањето на корисниците од страна на кориснички агент во датотеката .htaccess е метод за контролирање кој може да пристапи до вашиот веб-сервер врз основа на информации за прелистувачот што го користи посетителот. Низата 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} се користи за проверка на низата кориснички агент.
- ^Bot1, ^Bot2, ^Bot3 се примери на низи на кориснички агент што сакаме да ги блокираме. 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, добивате моќна алатка за подобрување на перформансите и функционалноста на веб-локациите.