Obsah súboru .htaccess je súčasťou konfigurácie Linux webservera, najčastejšie je využívaný na natavenie mod rewrite, môžete ním ale ovplyvniť i iné užitočné parametre. Niektoré príklady využitia a syntaxe nájdete nižšie.
- Ako súbor .htaccess vytvoriť/editovať?
- Dedenie nastavenia
- Príklady nastavenia
- Implementácia HTTPS (.htaccess presmerovanie)
Ako súbor .htaccess vytvoriť/editovať?
Buď pomocou nástroja, ktorý je k dispozícii v Zákazníckom centre - ten Vám umožní editáciu súšasných súborov, hlavnou výhodou je ale možnosť vytvorenia nového súboru cez grafické rozhranie, prípadne môžete súbor klasicky vytvoriť svojim obľubeným textovým editorom a cez FTP ho na server umiestniť do požadovaného adresára.
- Prihláste sa do Zákazníckeho centra.
- Zvoľte hosting, na ktorom si prajete urobiť obnovu dát (Služby / Hosting a servery/ Virtuálne servery).
- V Detaili servera kliknite v kategórii .htaccess na tlačidlo Nastavenia.
- Tu zvolíte adresár, pre ktorý chcete .htaccess editovať ( "/" je adresár koreňový - teda www).
- Do formulára vypíšte požadovaný .htaccess záznam a následne zmenu potvrďte kliknutím na tlačidlo Uložiť.
Podrobný postup:
- Pomocou svojich prihlasovacích údajov sa prihláste do Zákazníckeho centra. Prípadne si môžete požiadať o zaslanie zabudnutého hesla.
- Po prihlásení zvoľte virtuálny server, na ktorom si prajete urobiť obnovu dát (Služby / Hosting a servery/ Virtuálne servery).
- V Detaili servera kliknite v kategórii .htaccess na tlačidlo Nastavenia.
- Tu zvolíte adresár, pre ktorý chcete .htaccess editovať ( "/" je adresár koreňový - teda www).
- Do formulára vypíšte požadovaný .htaccess záznam a následne zmenu potvrďte kliknutím na tlačidlo Uložiť.
Dedenie nastavenia
Nastavenia v .htaccessu platia nie len pre adresár, v ktorom je súbor umiestnený, ale dedí sa pre všetky adresáre v ňom a nižšie (čo niekedy môže napr. u rewrite pravidiel vadiť).
Zdedené nastavenie sa dá vždy "prebiť" novým nastavením .htaccess v nižšim adresári (z ktorého naďalej budú nastavenia dediť jeho podzložky).
Dôležité: nesprávne nastavenie spôsobí namiesto zobrazenia webu chybu "Internal Server Error"
Príklady najbežnejšie využívaných nastavení
Zaheslovanie prístupu do adresára
Nastaviť prístup do konkrétneho adresára len po zadaní platného mena a hesla môžete v Zákazníckom centre v sekcii Služby/Hosting a servery/Virtuálne servery po kliknutí na názov domény a volbe tlačidla "nastavenie" u položky "Editácia súboru .htaccess"." Tu u príslušnej zložky zvoľte možnosť "Heslo".
- Tu u príslušnej zložky zvoľte možnosť "Heslo".
- Následne nastavte prihlasovacie údaje do daného adresára a potvrďte ich kliknutím na tlačidlo Nastaviť heslo.
TIP: Prehľad už vytvorených prístupových údajov, vrátane hesiel (v šifrovanej forme) je v editácii .htpasswd v dolnej časti nastavení. Tu máte tiež možnosť prístupy zmazať (a tým znova povoliť prístup do adresára bez hesla).
Nastavenie Webservera
# Komentár - všetok text, ktorý je na riadku za znakom "#", je serverom ignorovaný
# Takto si môžete k nastaveniu zapisovať poznámky pre neskoršiu orientáciu
# Nastavenie východiskových súborov (indexov) adresára - východiskové nastavenie TU
# Názvy sa oddeľujú medzerou, rozlišujú sa veľké a malé písmená (index.php a Index.php sú teda 2 rozdielne soubory)
DirectoryIndex index.php index2.php TretiIndex.htm PosledniIndex.html
# Vylistovanie obsahu adresára - defaultne vypnuté
# Ak v adresári nie je žiadny indexový súbor (viď DirectoryIndex výše), môžete si nechať vypísať jeho obsah
Options +Indexes
# Nastavenie vlastných chybových stránok
# Ak adresu môžete uviesť URL alebo relatívnu cestu - relatívna adresa sa uvádza od zložky /www/
ErrorDocument 401 /cesta/soubor401.html # (umiestnenie súboru je teda /www/cesta/soubor401.html)
ErrorDocument 404 /cesta/soubor404.html
ErrorDocument 500 /cesta/soubor500.html
ErrorDocument 503 http://domena.cz/cesta/soubor.html
# Riadenie prístupu
# povoľovanie/zakazovanie prístupu do adresára podľa IP adries
Allow from all # Defaultné nastavenie - prístup povolený zo všetkých IP adries
Deny from all # Zamedzuje prístup zo všetkých IP adries (napr. PHP sa ale lokálne do adresára dostane)
Deny from 81.95.96.29 # Zablokovanie prístupu z konkrétnej IP adresy
Deny from 81.95.96 # Zablokovanie prístupu rozsahu adries 81.95.96.xx
Nastavenie PHP
# Nastavenie register globals
php_flag register_globals on/off
# Nastavenie magic quotes
php_flag magic_quotes_gpc on
# Nastavenie display errors
php_flag display_errors on
#Nastavenie max_input_vars
php_value max_input_vars 5000 (alebo iné číslo podľa Vašej potreby)
Niektoré nastavenia PHP (napr. memory_limit) v .htaccess nastaviť nie je možné
Mod Rewrite
# pred nastavením akýchkoľvek pravidiel je potrebné rewrite zapnúť
RewriteEngine On
# presmerovanie domény nieco.domena.sk do adresara domena.sk/adresar cez 301
RewriteCond %{HTTP_HOST} ^neco\.domena\.cz$
RewriteRule ^(.*)$ http://domena.cz/adresar [R,L]
# presmerovanie domény nieco.domena.sk do adresara domena.sk/adresar
RewriteCond %{HTTP_HOST} ^neco\.domena\.cz [NC]
RewriteCond %{REQUEST_URI} !^/adresar/
RewriteRule ^(.*)$ /adresar/$1 [L,QSA]
Viac informácií k mod rewrite nájdete v dokumentácii:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
Vypnutie eAcceleratora
php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0
Implementácia HTTPS (.htaccess presmerovanie)
HTTPS je na Linux hostingu implementované (rovnako ako HTTP) pomocou reverznej proxy Nginx, ktorá robí tzv. TLS offloading.
Prevádzka medzi Nginx a Apache už sa nešifruje a Apache sa o šifrovaní dozvie len prenesene. Z toho plynú nasledujúce obmedzenia pre aplikácie, ktoré sa snažia overovať, či sa na ne pristupuje cez zabezpečené HTTPS.
- detekcia v PHP pomocou premennej $_SERVER['HTTPS'] !='on' je plne funkčná
- promenná $_SERVER['SERVER_PORT'] obsahuje i pri použití HTTPS číslo 80
- detekcia v súbore .htaccess pomocou pravidiel "RewriteCond %{SERVER_PORT} !^443$" a "RewriteCond %{HTTPS} !on" nie je funkčná! Port v týchto prípadoch bude vždy 8x, podľa verzie PHP a premenná HTTPS je vždy Off. Namiesto premennej %{HTTPS} je pre detekciu potrebné používať premennú %{HTTP:X-Forwarded-Proto}.
Presmerovanie na HTTPS so zachovaním spätnej kompatibility preto odporúčame robiť nasledujúcimi podmienkami:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA,NE]