Logo

.htaccess

Je textový soubor pojmenovaný .htaccess, určující zvláštní vlastnosti serveru. Díky němu lze nastavit: cache, chybová stránka, přesměrování, řízení povolení a zákazu přístupu pro IP, komprese přenosu dat, procházení adresářů, ochrana dat heslem, výchozí hlavní soubor namísto index.html anebo index.php.

Kdy a jak funguje?

Soubor .htaccess funguje v případě, že je na webovém serveru povolené jeho používání. Soubor .htaccess funguje vždy pro daný adresář a jestli není dáno jinak, tak funguje i pro podadresáře. Jestliže je soubor umístěn v kořenovém adresáři webu, platí i pro podadresáře, když jej ovšem umístíme s jinými parametry i do podadresáře, bude fungovat právě pro dané podadresáře.

V kořenovém adresáři webu mohu mít zakázáno procházení souborů, ale když vytvořím v nějakém podadresáři další soubor, který bude procházení souborů povolovat, bude toto nastavení platit jak pro daný podadresář, tak i pro jeho další vnořené struktury.

Zákazy a chyby

Chybová stránka při chybě 404:

ErrorDocument 404 /chyba.html

Zákaz pro IP 223.121.232.123:

deny from 223.121.232.123

Zákaz pro celý blok adres:

deny from 223

Povolí procházení souborů:

Options +Indexes

Zakáže procházení souborů

Options -Indexes

Komprese a cashování

Jednoduchý zápis obyčejného cashování:

<IfModule mod_expires.c> ExpiresActive On ExpiresDefault A600 ExpiresByType text/javascript A604800 ExpiresByType application/javascript A604800 ExpiresByType text/css A604800 ExpiresByType image/gif A604800 ExpiresByType image/png A604800 ExpiresByType image/jpeg A604800 ExpiresByType image/x-icon A604800 ExpiresByType text/html A60 </IfModule>

Ověřené řešení s kompresí a optimalizacemi:

<ifModule mod_deflate.c> AddOutputFilterByType DEFLATE \ text/html \ text/xml \ text/css \ text/plain \ image/svg+xml \ application/xhtml+xml \ application/xml \ application/rdf+xml \ application/rss+xml \ application/atom+xml \ text/javascript \ text/ecmascript \ application/javascript \ application/x-javascript \ application/ecmascript \ application/json \ application/x-font-ttf \ application/x-font-otf \ font/truetype \ font/opentype \ application/x-pointplus </ifModule> <ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 2592000 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/jpg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 604800 seconds" ExpiresByType application/javascript "access plus 604800 seconds" ExpiresByType application/x-javascript "access plus 604800 seconds" ExpiresByType text/html "access plus 604800 seconds" ExpiresByType application/xhtml+xml "access plus 604800 seconds" </ifModule> <ifModule mod_headers.c> <filesMatch "\.(ico|jpe?g|png|gif|swf)$"> Header set Cache-Control "public" </filesMatch> <filesMatch "\.(css)$"> Header set Cache-Control "public" </filesMatch> <filesMatch "\.(js)$"> Header set Cache-Control "private" </filesMatch> <filesMatch "\.(x?html?|php)$"> Header set Cache-Control "private, max-age=360, must-revalidate" </filesMatch> </ifModule> Header unset Pragma FileETag None Header unset ETag

Hezké URL bez přípony .php

## hezke URL RewriteEngine on ## schova priponu .php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php ## presmeruje /test/test.php na /test/test RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L,NC] ## presmeruje /test/test na /test/test.php RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [L] ## odstrani z URL index RewriteCond %{THE_REQUEST} ^GET.*index [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Upravené listování adresáři

Pomocí souboru .htaccess lze modifikovat i zobrazení procházení adresáři, které doporučuji předem určit a ošetřit bezpečnost nadřazených adresářů. Formátování barev a stylů lze směrovat na úplnou URL jako tomu je v mém příkladu(pouze ukázka).

## Povoleni prochazeni adresaru
Options +Indexes
IndexOptions IgnoreCase FancyIndexing FoldersFirst NameWidth=* DescriptionWidth=* 

## Styly
IndexStyleSheet "https://mvecko.cz/listovani.css"
Náhled přizpůsobeného listování adresáři

Pro stylování využívám soubor například listovani.css a v něm něco jako:

html {width: auto; margin: 0;padding: 20px 5px;background-color:#bbc9d9;}
body {max-width: 740px;margin: 0 auto;padding: 20px 10px;color:#dee9f7;background-color:#f9f9f9;border-radius:20px;}
body h1 {padding: 0; margin: 0; text-align:center; }
table, pre {display: block;width: 95%; margin: 10px auto; overflow: auto;}
pre {padding: 5px; word-spacing: 1px; letter-spacing:0.1; border: 1px dotted grey;}
td, pre a {padding-top:0px; line-height: 26px;}
address {text-align: center;font-size: 0.8em;}
a {max-width: 500px;color:#dee9f7;}
a[href^="/"] {line-height: 50px; color: red;}

Přesměrování ze staré domény na novou

RewriteEngine On
RewriteCond %{HTTP_HOST} ^stara.cz$ [OR]
RewriteCond %{HTTP_HOST} ^www.stara.cz$
RewriteRule (.*)$ http://nova.cz/$1 [R=301,L]