www.cesky-hosting.cz
.htaccess, mod_rewrite
Změny konfigurace webserveru
Individuální změny konfigurace webserveru pro vybranou (sub)doménu je možné provádět dvěma způsoby. Příkladem změn konfigurace je třeba nastavení přepisovacích pravidel pro mod_rewrite, chybové stránky, HTTP autentizace, změna názvu či pořadí úvodních souborů prezentace, nebo změna nastavení PHP.
1. Konfigurační soubor domény - změny v konfiguračním souboru domény jsou prováděny buď automaticky (při operacích z klientské sekce), nebo je provádějí naši administrátoři na základě autorizovaného požadavku z klientské sekce, nebo na základě požadavku z kontaktního e-mailu. Tento způsob změn konfigurace preferujeme kvůli vyšší bezpečnosti a výkonu dané aplikace.
2. Konfigurační soubor .htaccess - změny konfigurace jsou uvedeny v souboru s názvem .htaccess, který je umístěn na serveru v prostoru dané aplikace. Práce se souborem .htaccess je plně v režii uživatele. Používání .htaccess je třeba pro příslušnou (sub)doménu nejdříve povolit, ve výchozím nastavení není podpora .htaccess zapnuta.
.htaccess
Chcete-li používat konfiguraci pomocí souboru .htaccess, musíte si nejdříve jeho používání pro příslušnou (sub)doménu povolit. Nastavení provedete v klientské sekci, ve správě dané domény v části Webserver.
Používání .htaccess může vést ke snížení výkonu webserveru až o 20%, při použití nepovolené direktivy v .htaccess webserver pošle chybovou stránku 500 (Internal Server Error). .htaccess doporučujeme používat pouze zkušeným uživatelům!
V .htaccess povolujeme následující direktivy: FileInfo, Indexes, Limit a Options=Indexes. Bližsí informace k možným nastavením najdete v dokumentaci webserveru Apache na stránce http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride. Dané nastavení může být provedeno zároveň v konfiguračním souboru domény i v .htaccess. Nastavení v .htaccess má před nastavením v konfiguraci domény přednost, jedinou výjimkou je modul mod_rewrite, kde je to naopak.
Konfigurační soubor domény (VirtualHost)
Změny v konfiguračním souboru domény jsou prováděny buď automaticky (například nastavení chybové stránky nebo HTTP autentizace v klientské sekci), nebo je provádíme na základě autorizovaného požadavku. K jeho podání využijte formulář v klientské sekci (v části "Podpora"), požadavky na nastavení pravidel pro mod_rewrite posílejte e-mailem z kontaktní adresy vedené u dané domény v našem systému. Pravidla posílejte jako přílohu (prostý text) k tomuto emailu. Ke každému požadavku nezapomeňte specifikovat, na jakou (sub)doménu má být nastavení aplikováno.
mod_rewrite
Pravidla pro mod_rewrite je možné nastavit dvěma způsoby. Preferovaným je nastavení do konfiguračního souboru domény (nastavení provádějí naši administrátoři), druhou možností je jejich uvedení v souboru .htaccess (nastavení provádí uživatel). Jsou-li pravidla nastavena oběma způsoby, přednost mají ta v konfiguračním souboru domény.
Dokumentaci a návod na sestavení pravidel pro modul mod_rewrite najdete na následujících stránkách:
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
http://httpd.apache.org/docs/2.2/misc/rewriteguide.html
Efekt pravidel nastavovaných do konfiguračního souboru domény se může lišit od chování pravidel napsaných přímo pro aplikaci v souboru .htaccess. Toto je vlastnost modulu mod_rewrite.
Příklady pravidel pro mod_rewrite
Na tomto místě předkládáme ilustrativní příklady některých často používaných pravidel pro přepisování adres pomocí modulu mod_rewrite. Pravidla jsou určena pro nasazení do konfiguračního souboru domény (narozdíl od použití v .htaccess se například nedá použít direktiva RewriteBase, výrazy začínají lomítkem).
-
Přesměrování domény - přesměruje všechny požadavky na doménu http://example.com na stejné požadavky na http://www.example.com.
RewriteCond %{HTTP_HOST} ^example.com$ RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L] -
Přepis adresy typu /neco.html na /index.php?page=neco - stránky se "tváří" jako statické HTML.
RewriteRule ^/(.+).html$ /index.php?page=$1 [L]
-
Stejný případ jako v předchozím případě s tím rozdílem, že pravidlo je aplikováno pouze na požadavky do adresáře abc (tedy třeba http://www.example.com/abc/neco.html) - skript index.php je v tomto adresáři umístěn.
RewriteRule ^/abc/(.+).html$ /abc/index.php?page=$1 [L]
-
Požadavky typu /katalog/4651.html přepíše na /index.php?page=katalog&id=4651. Parametr page může obsahovat pouze písmena anglické abecedy, číslice nebo pomlčky, údaj za lomítkem musí být číslice.
RewriteRule ^/([a-zA-Z0-9-]+)/([0-9]+).html$ /index.php?page=$1&id=$2 [L]
-
Požadavky na existující soubory a adresáře nebudou přepsány, všechny ostatní požadavky budou přepsány na skript /index.php.
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d RewriteRule .* /index.php [L]Stejný efekt, jinak konstruovaná pravidla:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d RewriteRule .* - [L] RewriteRule .* /index.php [L]
Další příklady pravidel pro mod_rewrite najdete v sekci nápovědy o open source aplikacích.
+420 777 811 029
podpora@cesky-hosting.cz


