htaccess na webhostingu

  htaccess, Webhosting

.htaccess (na začátku je a musí být tečka) je soubor, který si můžete umístit do vašeho webu a v něm upravovat konfiguraci a chování vašich stránek.

Pokud soubor umístíte do adresáře www ve vašem webu, budou se pravidla vztahovat na celý web. Případně jej můžete umístit do nějakého podadresáře, pak se pravidla budou vztahovat jen na tento adresář, všechny jeho podadresáře a soubory.

Pomocí .htaccess lze dělat:

V konfiguraci webserveru jsou povoleny následující kategorie příkazů pro htaccess:

  • AuthConfig
  • FileInfo
  • Limit
  • Indexes

V souborech .htaccess na webhostingu není možno používat:

  • php_flag
  • php_value
  • ServerSignature
  • SetHandler
  • XBitHack
  • AddHandler

Dále u příkazu Options lze používat pouze volbu Indexes, jiné povoleny nejsou.

POZOR! Použití jakéhokoliv nepovoleného příkazu či parametru u příkazu Options způsobí nefunkčost celého webu, která se projeví chybou 500 – Internal Server Error.

Náš výchozí /www/.htaccess

RewriteEngine On

# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]

Přesměrování na HTTPS

Při aktivaci HTTPS se v drtivé většině případů nastavují také .htaccess pravidla, která variantu s HTTPS nastaví jako výchozí. Používáme nejčastěji tato. Nastavte je přímo do .htaccess souboru vašeho webu.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
Header set Content-Security-Policy "upgrade-insecure-requests;"

Lze využít také návodu k nastavení oblíbeného redakčního systému WordPress.