Soubor .htaccess je často opomíjený, přesto patří k nejmocnějším nástrojům, které máte na serveru Apache (a LiteSpeed). Umí ovlivnit přesměrování, indexaci, bezpečnost i rychlost webu – a tedy i vaše SEO.
V následujícím článku se podíváme na osvědčené postupy, konkrétní příklady konfigurací a také na to, jak se .htaccess chová u populárních frameworků a redakčních systémů (CMS) jako WordPress, Joomla nebo Laravel.
Proč je .htaccess klíčový pro SEO
- Kanonizace URL – sjednocení www / non-www, http / https
- Trvalá přesměrování (301) – přenášejí hodnotu odkazů a chrání před duplicitou
- Omezení duplicit – trailing slash, index.php, parametry
- Zpřístupnění důležitých zdrojů – Google musí vykreslit CSS/JS, jinak penalizuje UX
Pokud je soubor špatně nastaven, může web vypadnout z indexu, ztratit pozice nebo zpomalit.
Základní příklady pravidel
1. Přesměrování na HTTPS a non-www variantu
RewriteEngine On
# Přesměrování na HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Přesměrování z www na non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
2. Trailing slash politika
Pokud chceme sjednotit URL s lomítkem na konci:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{2,5}$
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]
3. Blokace nebezpečných souborů
<FilesMatch "\.(ini|log|bak|sql)$">
Require all denied
</FilesMatch>
.htaccess a populární CMS
WordPress
WordPress si většinou spravuje základní pravidla sám (pro permalinky). Typická šablona vypadá takto:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Důležité je psát vlastní pravidla nad tento blok, aby nebyla přepsána při aktualizaci WP.
Joomla
Joomla používá vlastní přepis pro „Search Friendly URLs“. Typický úryvek:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
Joomla také vyžaduje přejmenovat htaccess.txt na .htaccess.
Drupal
Drupal spoléhá na podobný přepis jako WP. Příklad pro čisté URL:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
Laravel (a jiné PHP frameworky)
Laravel pracuje s front controllerem v public/index.php. Typický .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Následně uvnitř public/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
SEO tipy pro práci s .htaccess
- 301 místo 302 – vždy používejte pro trvalé změny
- Minimalizujte hop-count – přesměrování maximálně přes 1 krok
- Testujte hlavičky (
curl -I https://domena.cz) - Nepřesměrovávejte vše na homepage – Google to bere jako chybu
- Ponechte CSS/JS přístupné – jinak ztratíte body v Core Web Vitals
Typické chyby, které zničí indexaci
- Redirect loop při kombinaci http→https a www→non-www
- Zablokování složek
/wp-content/uploads/nebo/media/ - Přesměrování starých URL pouze na homepage
- Neodchycené query parametry (např.
?sort=asc)