Soubor .htaccess je konfigurační soubor používaný na serverech Apache. Umožňuje správu nastavení serveru na úrovni jednotlivých adresářů. Pro WordPress lze .htaccess využít k řadě účelů, jako je přizpůsobení nastavení SEO, zabezpečení webu nebo optimalizace výkonu. V následujícím textu vám ukážu, jak soubor využít ve prospěch vašeho webu, avšak důrazně varuji před neodbornými zásahy v tomto systémovém souboru, které by mohli poškodit provoz vašeho webu.

miroslavbartik.cz - Tvořím výdělečné a udržitelné WordPress weby - WordPress .htaccess: systémový soubor s širokou škalou použití

Jak soubor .htaccess vytvořím?

Tím nejjednodušším způsobem, jak vytvořit .htaccess soubor je otevřít si jakýkoliv textový editor, třeba Poznámkový blok a pojmenovat jej jako htaccess.txt. V textovém bloku si pak do souboru vložit jakékoliv kódy, o kterých víte, že váš web potřebuje a vše si uložit v této podobě.

Poté, co skončíte s editací, otevřete si program pro obsluhu FTP protokolu, třeba program FileZilla a nahrajte soubor do kořenového adresáře webu, případně do složek, pro které mají příkazy v souboru platit. Následně textový soubor přejmenujte na .htaccess a přesvědčte se o tom, že váš zásah nezpůsobil nestandardní chování webu.

Pokud by se vám zobrazilo chybové hlášení, nebo-li kod 500: Initial Server Error, je s nějvětší pravděpodobností chyba v úpravách, které jste v souboru provedli. Proto je dobré si ještě před začátkem úprav udělat kompletní zálohu webu, nebo alespoň zálohu souboru .htaccess do textového souboru ve vaše lokálním zařízení.

Ještě pro úplnost doplním, že základní kód pro soubor, který generuje WordPress při nastavování permalinků je následující:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Pokud byste na svém webu měli potíže s přidanými pravidly, stačí vše ze souboru smazat a vrátit se k tomuto základnímu kódu. Pokud potřebujete více pochopit, jak WordPress pracuje se souborem .htaccess, doporučuji podívat se do WordPress Codex’s .htaccess příručky, kde najdete také direktivy pro nastavení multi-site instalace a podrobnosti o nastavení.

Kde soubor htaccess najdu a jak jej upravím?

Soubor .htaccess se obvykle nachází v kořenovém adresáři webového serveru, kde je nainstalován WordPress nebo jiný webový obsah. Tento kořenový adresář je často označován jako „public_html“, „www“, nebo „htdocs“, v závislosti na konfiguraci hostingu.

Kromě kořenového adresáře může být .htaccess umístěn i v dalších podadresářích, kde je potřeba upravit chování serveru pro konkrétní části webu. Například, můžete mít samostatný .htaccess soubor v adresáři pro WordPress administraci (obvykle /wp-admin) pro zvláštní zabezpečení, nebo v jiných adresářích pro specifické účely, jako je přizpůsobení chování určitých pluginů nebo témat.

FTP a Poznámkový blok

Jak již bylo zmíněno, pro úpravy souboru htaccess je dobré použít duo Poznámkový blok a FileZilla. Aby vaše úpravy měli jak se lidově říká „štábní kulturu“, je dobré si o úpravách obecně něco říct:

  • Vždy, a to myslím opravdu vážně, si vytvořte zálohu souboru. Je lepší se o dvě nebo tři minuty v práci a úpravách zdržet, než způsobit pád webu a doufat v přítomnost zálohy hostingu.
  • Opravdu doporučuji používat k úpravám zmíněný poznámkový blok, abyste předcházeli chybám, jako jsou zbytečné mezery mezi slovy nebo jednotlivými řádky. V tomto konkrétních souboru opravdu záleží na přesném kódu
  • Pokud jste zastánci komentářů a přehledného kódu, je pro vás dobrou zprávou to, že do souboru můžete vkládat komentáře, a to s pomocí znaku #. Můžete tak jednoduše vysvětlit účel a funkce kódu
  • Pokud máte úprav hodně, rozhodně doporučuji pravidla do souboru vkládat postupně a vše testovat. Zamezíte tak situaci, kdy do souboru .htaccess vložíte velké množství úprav a nebudete vědět, který z nich způsobuje pád webu nebo nestabilní chování
  • Dávejte pozor na pořadí směrnic a seznamte se s požadovanou syntaxí. Musíte také být opatrní s mezerami, protože to může ovlivnit, jak server interpretuje různá pravidla.

Tip na čtení: FTP je jedním ze základních protokolů, které by měl znát každý správce WordPress webu. Pokud jej ještě neumíte používat, přečtěte si příspěvek s názvem FTP: jeden z hlavních pilířů správce WordPress webu

Plugin WP Htacess File Editor

Pokud se necítíte na to, abyste editovali soubor napřímo, přes FTP a textový editor, je zde možnost využít plugin, třeba známý a spolehlivý WP HTACCESS EDITOR. Velkou nevýhodou tohoto postupu však vidím v tom, že pokud se ván nedopatřením stane, že je váš web nedostupný (právě kvůli chybným úpravám souboru .htaccess), stejně budete muset použít poznámkový blok a FTP protokol.

Po instalaci pluginu stačí přejít v hlavním levém panelu na položku Nastavení > WP Htaccess Editor. Před prvním použitím pluginu je zapotřebí přečíst si informace o rizicích a klidně si proklikat odkazy na oficiální fóra a stránky vývojářů. Následně stačí kliknout na tlačítko „I understand. Enable the editor.“ ve spodní části obrazovky.

Poté už můžete editovat soubor dle svých potřeb. Pod editačním tlačítek máte k dispozici ještě tlačítka pro testování změn bez uložení a tlačítko pro obnovu z poslední zálohy, což doporučuji používat vždy, když se objeví problém. Jak se říká, dvakrát měř, jednou řež.

Kromě zmíněného pluginu lze pro editaci souboru použít i jiné pluginy. Velmi často to umí pluginy pro SEO, např. Yoast SEO nebo RankMath SEO.

Jaké úpravy můžu do souboru .htaccess zadat?

Možností, jak web s pomocí souboru .htaccess posunout lidově řečeno „o level výš“ je fakt mnoho. Úpravy se týkají zabezpečení, SEO nebo obecného pojmu performance. Pojďme se tedy podívat na některé z nich.

Obecné

Obecné úpravy jsou směřovány na celkové nastavení webu, ať už se jedná o strukturu, nebo obsah, případně zabezpečení.

Přesměrování www na non-www (nebo naopak)

RewriteEngine On
RewriteCond %{http_host} ^example.com [NC
RewriteRule ^(.*) https://example.com/\ [R=301,NC]

Omezení spuštění php příkazů ve složce uploads

<Directory "/var/www/wp-content/uploads/">
<Files "*.php">
Order Deny,Allow
Deny from All
</Files>
</Directory>

Nezapomeňte v kódu upravit cestu ke složce Uploads podle nastavení vašeho serveru

Přizpůsobení výchozí stránky chyby 404

ErrorDocument 404 /404.html

Zabezpečení

Zabezpečení webu je jednou z priorit, nejlépe hned za službami/produkty pro vaše klienty nebo čtenáře.

Zabezpečení administrace

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
# povolené ip adresy
allow from xx.xx.xx.xxx
</LIMIT>

Nezapomeňte xx.xx.xx.xxx nahradit IP adresou, kterou chcete povolit.

Vynucení HTTPS

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.you-site.com"
ErrorDocument 403 https://www.your-site.com

Nezapomeňte www.your-site.com nahradit vaší doménou.

Blokování přístupu k systémové složce wp-includes

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

Ochrana systémového souboru wp-config.php

<files wp-config.php>
order allow,deny
deny from all
</files>

Ochrana proti hotlinkingu obrázků

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Nezapomeňte nahradit yourdomain.com adresou svého webu

Ochrana citlivých systémových souborů

<FilesMatch "^.*(wp-config\.php|readme\.html|license\.txt|install\.php|wp-admin/install\.php|wp-admin/upgrade\.php|\.htaccess)$">
Order Deny,Allow
Deny from all
</FilesMatch>

Performance

Stejně jako u bezpečnosti, i performance zvyšuje uživatelům jejich zážitek z webu. Obecně řečeno, nikdo nechce na obsah dlouho čekat a nechce jej na telefonu zoomovat nebo dlouho scrolovat.

Komprimace souborů pro rychlejší načítání

<IfModule mod_deflate.c>
    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 image/svg+xml
</IfModule>

Nastavení vypršení cache pro statické zdroje

<IfModule mod_expires.c>
    ExpiresActive On
</IfModule>
<IfModule mod_headers.c>
    Header append Vary: Accept-Encoding
</IfModule>
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresDefault "access plus 2 days"
</IfModule>

SEO

Stejně jako uživatelé, i vyhledávače chtějí najít váš web. myslete na to.

Přesměrování starých URL na nové

RewriteEngine On
RewriteRule ^stara-stranka.html$ /nova-stranka.html [R=301,L]

Nezapomeňte upravit url stránek, které chcete přesměrovat

Často kladené otázky

Ne, určitě není. jediné nastavení, které byste pro jistotu měli navštívit v administraci webu je položka Nastavení > Trvalé odkazy a nstavení bez jakýchkoliv změn uložit. Tím zajistíte, že WordPress sám tento soubor se základními pravidly vytvoří

Ne. Editor, který umožňuje upravovat soubory pluginů nebo šablon nemá přístup do kořenového adresáře vašeho hostingu. Poroto je nutné pro tyto úpravy použít přístup na FTP a již zmíněný poznámkový blok.

Příčin, proč soubor nevidíte je bohužel víc: první variantou je, že vůbec neexistuje (na začátku článku je info o tom, jak jej vytvořit a kam umístit). Druhou variantou je, že v nastavení programu FileZilla se vám nezobrazují skryté systémové soubory. To napravíte změnou nastavení programu. Třetí variantou může být to, že na hostingu běží jiný server, než Apache. Za určitých okolností může běžet i na ngix servu nebo litespeed, ale to jsou specifické případy s vlastními konfiguracemi.

Tip na čtení: Používáte na svém WordPress webu obsahový editor Gutenberg? Pokud ano, sepsal jsem pro vás delší a úvodní článek s názvem Gutenberg: Základní vizuální editor pro tvorbu WordPress webu

Pár slov na závěr

S pomocí těchto tipů a změn v systémovém souboru .htaccess můžete svůj web posunout o level víš, ať už se jedná o jeho zabezpečení (blokace ip adres, přístupy do složek a souborů atd.), vylepšení SEO (nastavení přesměrování) nebo rychlosti načítání (nastavení mezipaměti)

Je ale důležité mít na paměti, že .htaccess je silný nástroj a změny v něm mohou mít významný dopad na fungování vašeho webu. Proto byste měli být při jeho úpravě opatrní a mít aktuální zálohu, než provedete jakékoli změny. Je totiž velmi snadné i pro zkušeného správce webu udělat chybu v čárce, tečce nebo nesprávné mezeře v kódu a web laicky řečeno sundat.