O tom co je htaccess popř. jak použít htaccess pro omezení přístupu pojednávají již jiné články. V tomto chci pouze poukázat na některé skutečnosti ve kterých se buď často chybuje, popř. nemusí být na první pohled zřejmé. Jednou z takových věcí může být použití regulárních výrazů u mod rewrite. Regulární výrazy jsme si popsali i vzhledem k použití u htaccess dostatečně v tomto článku popř. v jeho pokračování.
Pokud už se rozhodnete použít mod rewrite z jakéhokoliv důvodu (třeba i jen proto, že už prostě v apach serveru je), tak je třeba si uvědomit pár zásadních maličkostí:
- Chybně vytvořený soubor .htaccess může vést k znepřístupnění Vašeho webu.
- Chybný .htaccess může díky cyklování znepříjemnit život celému serveru.
- Použití .htaccess je v rukou znalého nebezpečná zbraň
Soubor .htaccess umístěný v určitém adresáři na serveru dovoluje upravit i chování adresáře stejnými instrukcemi, které se normálně píšou do httpd.conf. Ovlivněny jsou veškeré podadresáře, pokud v nich není opět jiný .htaccess soubor. Mnohé možná napadne, proč je soubor .htaccess s tečkou na začátku. Je to vlastně poměrně chytrá finta, protože to ve skutečnosti žádný normální soubor není (Windows to chápou jen jako příponu :)). Takto se na systémech založených na Unixu označují soubory, které mají být pro uživatele skryté, popř. nepřístupné. Pokud tedy administrátor serveru zakazuje výpis skrytých souborů, tak i když jej na server přes FTP nahrajete, tak jej patrně neuvidíte, i když tam ve skutečnosti bude. Vychytávkou o které se v tomto článku dočtete je mod_rewrite. Pokud chcete vědět něco více o .htaccess jako takovém, doporučuji Apache Tutorial: .htaccess files.
mode rewrite
úkolem tohoto modulu je manipulace s URL (přepisování). To se může dít na základě jisté podmínky. O tom ale později. V praxi to pak znamená, že to co dané podmínce vyhoví (pokud je uvedena) je pomocí dalšího pravidla založeného nejčastěji na regulárních výrazech přepsáno na něco jiného. Je to velice podobné modu alias, jen s malým rozdílem, že pomocí rewrite lze řešit mnohem složitější situace, například pro přehledné URL. K tomu, aby mod rewrite fungoval je potřeba jej zapnout, takže v každém .htaccess souboru, kde jej budete používat je třeba mít tento řádek.
RewriteEngine on
což způsobí iniciaci tohoto modulu.
U každého pravidla se navíc může vyskytnou podmínka (RewiteCond), kdy se má dané pravidlo provést. Takže nejen že upřesníte s jakými soubory, ale například i za jakých dalších podmínek. Pravidlo je pak zapsáno v další části.
Jak tey rewrite pravidlo, neboli rule vypadá obecně? Vlice jednoduše:
RewiteCond TestovacíŘetězec VzorPodmínky
RewriteRule Vzor Substituce DalšíPříznaky
Jak to funguje v praxi:
.
Příště se podíváme na to co jsou to ty příznaky a na nějaké příklady.