Ebben a cikkben megvizsgáljuk a .htaccess fájl használatának alapelveit, amely kulcsfontosságú a SEO javításához. Ez a fájl biztosítja az oldalak megfelelő indexelését a keresőmotorok által. Megtanuljuk az átirányítások kezelését, a biztonság konfigurálását és a teljesítmény fokozását. Ezenkívül tippeket adunk a fájl önálló konfigurálásához.
Miért van szükség a .htaccess fájlra?
A .htaccess fájl egyfajta "távirányítóként" működik a webfejlesztők számára az Apache szervereken. Kényelmes eszközöket kínál a különböző paraméterek beállításához és a webhely viselkedésének kezeléséhez. Ha nem érhető el közvetlen hozzáférés a szerver fő konfigurációs fájljaihoz (mint például a virtuális tárhely esetében), a .htaccess hasznos eszközzé válik a szükséges változtatások elvégzéséhez.
A Htaccess gyakran a webhely gyökérmappájában vagy azokban a mappákban található, ahol speciális konfigurációra van szükség. Például, ha WordPress-t használ, a konfigurációt a Yoast SEO bővítményen keresztül végezheti el, amelyről a robots.txt konfigurálása című cikkben írtunk . Más esetekben elegendő a kívánt mappába menni és szerkeszteni a meglévő .htaccess fájlt, vagy létrehozni, ha még nem hozták létre.
A .htaccess fájl konfigurálása
301 A htaccess átirányítása
A .htaccess fájl 301-es átirányítása egy webhely állandó átirányításához hasonlítható. Tájékoztatja a keresőmotorokat és a böngészőket, hogy az oldal mostantól véglegesen új címen található, és javasolja a könyvjelzők frissítését és az indexelést. Az ilyen átirányítást általában akkor használják, ha egy oldalt áthelyeznek vagy törölnek, hogy megőrizzék a keresési eredmények között elfoglalt helyét, és átirányítsák a látogatókat az új helyre.
Az átirányítások aktiválásához engedélyeznie kell a megfelelő parancsot a .htaccess fájlban:
RewriteEngine on
Ezt követően beállíthatja az átirányítás legegyszerűbb formáját:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Egy hasonló átirányítás a RedirectPermanent direktíva használatával így néz ki:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Ezek a legegyszerűbben konfigurálható átirányítási módszerek. Tekintsünk egy olyan konfigurációt, amely más, fejlettebb átirányítási típusokat használ a mod_rewrite modullal:
<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>
Az ideiglenes áthelyezést jelző 302-es átirányítási .htaccess sokkal ritkábban fordul elő. Íme egy példa egy ilyen beállításra:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Direktíva ErrorDocument
Ezzel a beállítással szabályozhatja, hogy a felhasználó mit lásson, ha HTTP-hibák fordulnak elő webhelyén. A szokásos hibaüzenet helyett megjelenítheti a saját oldalát, amely informatívabb lesz a látogató számára, és segít megérteni a történteket. Egyszerűen kövesse ezt a szintaxist a használathoz:
ErrorDocument <error_code> <URL_page>
Például,
ErrorDocument 404 /errors/not_found.html
Ez azt jelenti, hogy 404-es hiba esetén a /errors/not_found.html címen található oldal nyílik meg. Az abszolút URL-eket hasonlóképpen kell megadni:
ErrorDocument 500 http://example.com/errors/server_error.html
Ez a példa a server_error.html oldal megjelenítését mutatja a http://example.com/errors/ címen 500-as hiba esetén.
Webhelykönyvtárhoz való hozzáférés megtagadása
A .htaccess fájl tartalmazza a „ Deny from all” parancsot , amely segít megtagadni a hozzáférést bizonyos mappákhoz vagy fájlokhoz a webszerveren. Ez akkor lehet hasznos, ha az adatbiztonság érdekében el szeretnéd rejteni a személyes információkat vagy a fontos fájlokat a webhely látogatói elől.
A listázás letiltásához (az összes elérhető könyvtár megtekintéséhez) hozzá kell adnia a következő sort:
Options -Indexes
A következőképpen néz ki egy példa egy adott könyvtárhoz való hozzáférés blokkolására:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Hasonlóképpen megtagadhatja a hozzáférést egyetlen fájlhoz:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Vagy egy sor fájlhoz kiterjesztés szerint:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Hozzáférés blokkolása IP-n keresztül
A hozzáférés IP-alapú blokkolása a .htaccess fájlban egy olyan módszer, amely lehetővé teszi, hogy korlátozza a webhelyhez való hozzáférést bizonyos IP-címek vagy azok csoportjai számára. Ez akkor lehet hasznos, ha meg akarja akadályozni bizonyos személyek vagy nemkívánatos robotok hozzáférését webhelyéhez vagy bizonyos részeihez.
Egyetlen IP-cím blokkolása a következő paranccsal történik:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Több IP-cím blokkolása hasonlóképpen történik, a " Deny from " sor megkettőzésével a szükséges címekkel.
IP-címtartomány blokkolásához:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Ha csak bizonyos IP-címekhez szeretne hozzáférést engedélyezni, adja hozzá a kódot:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
A hozzáférés teljes megtagadásához használd a Deny from all direktívát , a címek maszk szerinti blokkolásához pedig a Deny from 11.22 direktívát.
Ahol a 11.22 az IP-cím maszkja.
Látogatók blokkolása User-Agent által
A felhasználók letiltása User-Agent által a .htaccess fájlban egy módszer annak szabályozására, hogy a látogató által használt böngészővel kapcsolatos információk alapján ki férhessen hozzá a webszerverhez. A User-Agent karakterlánc adatokat tartalmaz arról a böngészőről, amelyet egy személy az Ön szerverével való interakcióhoz használ, és ennek az információnak köszönhetően korlátozhatja bizonyos felhasználók hozzáférését.
A User-Agent általi blokkolás leggyakoribb módja a mod_rewrite használata :
<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>
Ebben a példában:
- A RewriteCond %{HTTP_USER_AGENT} a User-Agent karakterlánc ellenőrzésére szolgál.
- A ^Bot1, ^Bot2, ^Bot3 példák a blokkolni kívánt User-Agent karakterláncokra. Az NC módosítók azt jelzik, hogy az összehasonlításnak nem kell megkülönböztetnie a kis- és nagybetűket.
- A RewriteRule ^.*$ - [F,L] vonatkozik a kérésre, ha a RewriteCond bármelyik feltétele teljesül. Választ küld a 403 Tiltott állapotkóddal (F), és leállítja a szabályok feldolgozását (L).
Gyorsítótár a htaccessben
A gyorsítótár .htaccess fájlon keresztüli konfigurálása felgyorsítja a webhelyet, mivel gyorsabban tölti be a felhasználókat. Ez így működik: bizonyos fájlok, például képek, CSS-stílusok és JavaScript-szkriptek az első betöltés után a felhasználó böngészőjének gyorsítótárában tárolódnak. A böngésző most már használhatja ezeket a fájlokat a gyorsítótárból, ahelyett, hogy minden alkalommal újratöltené őket a szerverről, amikor a felhasználó felkeres egy oldalt. Ez csökkenti a betöltési időt és javítja a webhely teljesítményét.
Vegyünk egy példát:
# 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>
A gyakran frissített erőforrások esetében viszont le kell tiltani a gyorsítótárazást:
# 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>
A webhely teljesítményének optimalizálása
Az Apache mod_deflate és mod_gzip moduljai segítenek tömöríteni azokat az információkat, amelyeket a szerver küld a felhasználók eszközeire. Ezáltal a fájlok mérete kisebb lesz, ami viszont felgyorsítja az oldalak betöltését. Fontos azonban megjegyezni, hogy ezeknek a moduloknak a támogatása és konfigurációja a szervertől függően változhat.
Példa a mod_deflate modul használatára :
<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>
Példa a mod_gzip fájlra :
<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>
Megbeszéltük a leggyakrabban használt direktívákat. A fájl összes képességével megismerkedhetsz a hivatalos dokumentációban.
A .htaccess fájl működésének ellenőrzése
Ha ellenőrizni szeretné, hogy a .htaccess fájl működik-e a webhelyen, hajtsa végre a következő lépéseket:
- Szándékosan módosítsa a hibás .htaccess fájlt. Válaszul a szervernek hibát kell adnia. Ez a módszer megmutatja, hogy a fájl művelete általában alkalmazva van-e a kiszolgálón.
- Ellenőrizze az Ön által végrehajtott konkrét módosítások működőképességét. Például végezzen kisebb módosításokat az egyik paraméteren, és értékelje a változások jelenlétét.
- Ellenőrizze az oldal állapotkódját, ha a változtatások a szerver válaszához kapcsolódnak. Hogyan kell ezt megtenni, korábban leírtuk a cikkben HTTP hibakódok: a szerverhibák teljes listája.
- Tekintse meg a szervernaplókat. A .htaccess fájl működésével kapcsolatos összes hibát megjelenítik.
- Végezzen tesztelést online szolgáltatások vagy eszközök segítségével.
Fontos megérteni, hogy a .htaccess fájl működésének ellenőrzéséhez nem kell egyszerre végrehajtania az összes lépést. Elég kiválasztani a listából a legmegfelelőbb módszert, és használni.
Összegzés
A .htaccess fájl konfigurálása fontos lépés az Apache-kiszolgáló optimalizálása és védelme terén. Megvizsgáltuk, hogyan segít ez a fájl az átirányítások kezelésében, a tartalom tömörítésében és a biztonság biztosításában. Miután elsajátította a .htaccess használatát, hatékony eszközt kap a webhelyek teljesítményének és funkcionalitásának javítására.