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.

  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 požadavku z kontaktního e-mailu. Přínosem tohoto způsobu změn konfigurace je vyšší bezpečnost a výkon dané aplikace, nevýhodou pak méně flexibilní provádění změn (zejména u mod_rewrite).
  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.

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, úprava nastavení cachování obsahu, nebo změna nastavení PHP


nahoru

.htaccess

Použití konfigurace pomocí souboru .htaccess si můžete zapnout pro svou (sub)doménu 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% (je to vlastnost této technologie), 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, na serverech s PHP 5.4 a vyšším ještě AuthConfig. 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, zaslaného z klientské sekce (v části "Zákaznická 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 prosím 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. Buď se zanesou přímo do konfiguračního souboru domény (nastavení provádějí naši administrátoři po zaslání požadovaných pravidel), 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. Jsou zde uvedeny příklady pro použití v souboru .htaccess a také v konfiguračním souboru domény. Rozdíly v použití jsou např. v tom, že výrazy v konfiguračním souboru domény začínají lomítkem (viz. níže uvedené příklady), a také zde nelze použít direktivu RewriteBase (ta je určena pro použití v souboru .htaccess).

  • Přesměrování domény example.com bez varianty www na variantu s www - přesměruje všechny požadavky na doménu http://example.com na stejné požadavky na http://www.example.com.

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^example\.com$
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^example\.com$
    RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]
    
  • Přesměrování domény example.com s variantou www na variantu bez www - přesměruje všechny požadavky na doménu http://www.example.com na stejné požadavky na http://example.com.

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.example\.com$
    RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.example\.com$
    RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]
    
  • Přesměrování domény example.com s variantou www i bez www na jinou doménu - přesměruje všechny požadavky na doménu http://example.com nebo http://www.example.com na stejné požadavky na http://sub.example.com.

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
    RewriteRule ^(.*)$ http://sub.example.com/$1 [R=301,L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
    RewriteRule ^/(.*)$ http://sub.example.com/$1 [R=301,L]
    
  • Přesměrování domény example.com s variantou www i bez www na konkrétní adresu - přesměruje všechny požadavky na doménu http://example.com nebo http://www.example.com na adresu http://sub.example.com/index.html.

    Příklad pro použití v souboru .htaccess i v konfiguračním souboru domény:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
    RewriteRule .* http://sub.example.com/index.html [R=301,L]
    
  • Přepis adresy typu /neco.html na /index.php?page=neco - stránky se "tváří" jako statické HTML.

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteRule ^(.+).html$ /index.php?page=$1 [L]
    

    Příklad pro použití v konfiguračním souboru domény:

  • RewriteEngine On
    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.

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteRule ^abc/(.+).html$ /abc/index.php?page=$1 [L]
    

    Příklad pro použití v konfiguračním souboru domény:

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

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9-]+)/([0-9]+)\.html$ /index.php?page=$1&id=$2 [L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteEngine On
    RewriteRule ^/([a-zA-Z0-9-]+)/([0-9]+)\.html$ /index.php?page=$1&id=$2 [L]
    
  • Přesměrování z nezabezpečeného http na zabezpečené https připojení (pomocí SSL certifikátu).

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
    
  • Přesměrování z nezabezpečeného http na zabezpečené https připojení (pomocí SSL certifikátu) pro konkrétní doménu.

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(www\.)?domena\.cz$
    RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(www\.)?domena\.cz$
    RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,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.

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* /index.php [L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteRule .* /index.php [L]
    

    Stejný efekt, jinak konstruovaná pravidla:

    Příklad pro použití v souboru .htaccess:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule .* - [L]
    RewriteRule .* /index.php [L]
    

    Příklad pro použití v konfiguračním souboru domény:

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
    RewriteRule .* - [L]
    RewriteRule .* /index.php [L]
    
  • Ochrana proti hotlinkování obrázků do cizích webů - přímé požadavky na stažení obrázků daných typů přesměruje na vybraný obrázek obsahující informaci o blokování hotlinků. Pro domovskou doménu a další vybrané domény je nastavena výjimka z blokování, stejně tak pro požadavky s prázdnou HTTP hlavičkou Referer.

    Příklad pro použití v souboru .htaccess i v konfiguračním souboru domény:

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example\.com [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?your-other-domain\.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ http://example.com/hotlink_banned.jpg [NC,R,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

Další domény za akční ceny

Ocenění Českého hostingu - Nejlepší webhosting PHP + MySQL a Webhosting roku Twitter Českého hostingu

Potřebujete poradit?
Jsme online