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 na základě požadavku z kontaktního e-mailu. Tento způsob změn konfigurace je vhodnější 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.

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


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 "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. Preferovaným je nastavení 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