Znalostní báze Jednoduchý návod pro práci se službou Profitserver
Hlavní Znalostní báze Konfigurace souboru .htaccess

Konfigurace souboru .htaccess


V tomto článku prozkoumáme základní principy používání souboru .htaccess, který je zásadní pro zlepšení SEO. Tento soubor zajišťuje správné indexování stránek vyhledávači. Naučíme se, jak spravovat přesměrování, konfigurovat zabezpečení a zvyšovat výkon. Kromě toho poskytneme tipy, jak tento soubor nakonfigurovat nezávisle.

Proč je potřeba .htaccess

Soubor .htaccess funguje jako druh „vzdáleného ovládání“ pro webové vývojáře na serverech Apache. Nabízí pohodlné nástroje pro úpravu různých parametrů a řízení chování webu. Pokud není k dispozici přímý přístup k hlavním konfiguračním souborům serveru (jako je tomu například u virtuálního hostingu), stává se .htaccess užitečným nástrojem pro provádění nezbytných změn.

Htaccess se často nachází v kořenové složce vašeho webu nebo v těch složkách, kde je potřeba speciální konfigurace. Pokud například používáte WordPress, konfiguraci lze provést pomocí pluginu Yoast SEO, o kterém jsme hovořili v článku o Konfigurace souboru robots.txt. V ostatních případech stačí přejít do požadované složky a upravit stávající soubor .htaccess, případně jej vytvořit, pokud ještě nebyl vytvořen.

Konfigurace souboru .htaccess

301 přesměrování htaccess

Přesměrování 301 v souboru .htaccess lze přirovnat k trvalému přesměrování na webu. Informuje vyhledávače a prohlížeče, že stránka je nyní trvale umístěna na nové adrese, a navrhuje aktualizaci záložek a indexování. Takové přesměrování se obvykle používá, když je stránka přesunuta nebo smazána, aby se zachovalo její hodnocení ve výsledcích vyhledávání a přesměrovali návštěvníci na nové místo.

Chcete-li aktivovat přesměrování, musíte povolit odpovídající příkaz v souboru .htaccess:

RewriteEngine on

Poté můžete nakonfigurovat nejjednodušší formu přesměrování:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

Podobné přesměrování pomocí Přesměrování Trvalé direktiva vypadá takto:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

Toto jsou nejjednodušší metody přesměrování ke konfiguraci. Uvažujme konfiguraci, která používá jiné, pokročilejší typy přesměrování s mod_rewrite modul:

<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>

S 302 přesměrováním .htaccess, indikujícím dočasné přemístění, se setkáváme mnohem méně často. Zde je příklad takového nastavení:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

Direktiva ErrorDocument

Toto nastavení vám umožňuje řídit, co uživatel uvidí, když na vašem webu dojde k chybám HTTP. Místo standardní chybové hlášky můžete zobrazit vlastní stránku, která bude pro návštěvníka informativnější a pomůže mu pochopit, co se stalo. Jednoduše postupujte podle této syntaxe pro použití:

ErrorDocument <error_code> <URL_page>

Například,

ErrorDocument 404 /errors/not_found.html

Znamená to, že když a 404 dojde k chybě, stránka na /errors/not_found.html bude otevřena. Absolutní adresy URL se zadávají podobně:

ErrorDocument 500 http://example.com/errors/server_error.html

Tento příklad ukazuje zobrazení chyba_serveru.html stránka na http://example.com/errors/ v případě 500 chyba.

Odepření přístupu k adresáři webu

Soubor .htaccess má příkaz Odepřít ze všech, která pomáhá zakázat přístup k určitým složkám nebo souborům na vašem webovém serveru. To může být užitečné, pokud chcete před návštěvníky webu skrýt soukromé informace nebo důležité soubory, abyste zajistili bezpečnost dat.

Chcete-li zakázat výpis (zobrazení všech dostupných adresářů), musíte přidat řádek:

Options -Indexes

Příklad blokování přístupu do konkrétního adresáře vypadá takto:

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

Podobně můžete odepřít přístup k jednomu souboru:

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

Nebo pro řadu souborů podle přípony:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

Blokování přístupu pomocí IP

Blokování přístupu pomocí IP v souboru .htaccess je metoda, která vám umožňuje omezit přístup na váš web pro konkrétní IP adresy nebo jejich skupiny. To může být užitečné, pokud chcete určitým lidem nebo nežádoucím robotům zabránit v přístupu na váš web nebo jeho konkrétní části.

Blokování jedné IP adresy se provádí příkazem:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

Blokování několika IP adres se provádí podobně duplikováním "Deny z" řádek s požadovanými adresami.

Pro blokování rozsahu IP adres:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

Chcete-li povolit přístup pouze pro konkrétní adresy IP, přidejte kód:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Pro úplné odmítnutí přístupu použijte směrnici Odepřít ze všecha pro blokování adres maskou zadejte Deny z 11.22.

Kde, 11.22 je IP adresa maska.

Blokování návštěvníků pomocí User-Agent

Blokování uživatelů pomocí User-Agent v souboru .htaccess je metoda kontroly toho, kdo může přistupovat k vašemu webovému serveru na základě informací o prohlížeči, který návštěvník používá. Řetězec User-Agent obsahuje údaje o prohlížeči, který osoba používá k interakci s vaším serverem, a díky těmto informacím můžete omezit přístup pro určité uživatele.

Nejběžnějším způsobem blokování pomocí User-Agent je použití 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>

V tomto příkladu:

  1. RewriteCond %{HTTP_USER_AGENT} se používá ke kontrole řetězce User-Agent.
  2. ^Bot1, ^Bot2, ^Bot3 jsou příklady řetězců User-Agent, které chceme blokovat. Modifikátory NC označují, že by se při srovnání nemělo rozlišovat malá a velká písmena.
  3. RewriteRule ^.*$ - [F,L] platí pro požadavek, pokud je splněna některá z podmínek RewriteCond. Odešle odpověď se stavovým kódem 403 Forbidden (F) a zastaví zpracování pravidel (L).

Ukládání do mezipaměti v htaccess

Konfigurace ukládání do mezipaměti prostřednictvím souboru .htaccess pomáhá urychlit váš web tím, že se uživatelům rychleji načítá. Funguje to takto: určité soubory, jako jsou obrázky, styly CSS a skripty JavaScript, se po prvním načtení uloží do mezipaměti prohlížeče uživatele. Nyní může prohlížeč používat tyto soubory z mezipaměti, místo aby je znovu načítal ze serveru pokaždé, když uživatel navštíví stránku. To zkracuje dobu načítání a zlepšuje výkon webu.

Zvažte příklad:

# 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>

U zdrojů, které jsou často aktualizovány, je naopak nutné zakázat ukládání do mezipaměti:

# 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>

Optimalizace výkonu webu

Jedno mod_deflate a mod_gzip moduly v Apache pomáhají komprimovat informace, které server odesílá do zařízení uživatelů. Díky tomu jsou soubory menší, což zase urychluje načítání stránky. Je však důležité si uvědomit, že podpora a konfigurace těchto modulů se může lišit v závislosti na vašem serveru.

Příklad použití mod_deflate modul:

<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říklad pro 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>

Probrali jsme nejčastěji používané směrnice. Můžete se seznámit se všemi možnostmi souboru v oficiální dokumentace.

Jak zkontrolovat funkčnost souboru .htaccess

Chcete-li zkontrolovat, zda váš soubor .htaccess na webu funguje, můžete provést následující kroky:

  1. Záměrně změňte soubor .htaccess s chybou. Jako odpověď by měl server ohlásit chybu. Tato metoda ukazuje, zda je operace se souborem obecně aplikována na server.
  2. Zkontrolujte funkčnost konkrétních změn, které jste provedli. Proveďte například drobnou úpravu jednoho z parametrů a vyhodnoťte přítomnost změn.
  3. Zkontrolujte stavový kód stránky, pokud změny souvisejí s odpovědí serveru. Jak to udělat, jsme dříve popsali v článku Kódy chyb HTTP: úplný seznam chyb serveru.
  4. Podívejte se na protokoly serveru. Zobrazují všechny chyby související s provozem souboru .htaccess.
  5. Proveďte testování pomocí online služeb nebo nástrojů.

Je důležité si uvědomit, že ke kontrole funkčnosti souboru .htaccess není nutné provádět všechny kroky najednou. Stačí si vybrat ze seznamu nejvhodnější metodu a použít ji.

Závěr

Konfigurace souboru .htaccess je důležitým krokem při optimalizaci a ochraně vašeho serveru Apache. Prozkoumali jsme, jak tento soubor pomáhá spravovat přesměrování, komprimovat obsah a zajistit zabezpečení. Jakmile si osvojíte práci s .htaccess, získáte výkonný nástroj pro zlepšení výkonu a funkčnosti webových stránek.

❮ Předchozí článek Nastavení FTP serveru
Další článek ❯ Jak nakonfigurovat webový server (Apache-PHP-MySQL/MariaDB) na Linuxu

Zeptejte se nás na VPS

Jsme vždy připraveni zodpovědět vaše dotazy v kteroukoli denní i noční dobu.