Nacházíte se zde: Úvod » Pro zákazníky » Nápověda » .htaccess, mod_rewrite

.htaccess, mod_rewrite


nahoru

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.


nahoru

.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.


nahoru

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.


nahoru

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.


nahoru

Zpět na přehled nápovědy