.htaccess (editace, specifika)

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ť?

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.

  1. Prihláste sa do Zákazníckeho centra.
  2. Zvoľte hosting, na ktorom si prajete urobiť obnovu dát (Služby / Hosting a servery/ Virtuálne servery).
  3. V Detaili servera kliknite v kategórii .htaccess na tlačidlo Nastavenia.
  4. Tu zvolíte adresár, pre ktorý chcete .htaccess editovať ( "/" je adresár koreňový - teda www).
  5. 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:

  1. 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.
  2. Po prihlásení zvoľte virtuálny server, na ktorom si prajete urobiť obnovu dát (Služby / Hosting a servery/ Virtuálne servery).
     
  3.  V Detaili servera kliknite v kategórii .htaccess na tlačidlo Nastavenia.
     
  4. Tu zvolíte adresár, pre ktorý chcete .htaccess editovať ( "/" je adresár koreňový - teda www).
     
  5. 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".

  1. Tu u príslušnej zložky zvoľte možnosť "Heslo".
     
  2. 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]