Portál technickej podpory

Ak tu nenájdete to, čo ste hľadali, neváhajte nás kontaktovať.
Potrebné informácie pre vás radi doplníme.

Modul mod_rewrite na linuxových serveroch

K serveru Apache existuje veľké množstvo doplnkov s rôznymi funkciami. Jedným z najpoužívanejších je modul mod_rewrite. Tento doplnok je využívaný, v niektorých prípadoch aj priamo vyžadovaný, radou webových aplikácií. Aj keď sú jeho možnosti veľmi široké a je možné ho použiť k viacerým účelom, najčastejšie je používaný pre tvorbu „pekných“ URL, čo má celkom zásadný význam pre tzv. SEO webu. V neposlednom rade  môžete pomocou mod_rewrite napríklad blokovať SQL útoky či prístupy z cudzích štátov s výnimkou ČR a SK.

Podmienky funkčnosti

  • na servery musí bežať Apache
  • mod_rewrite musí byť nainštalovaný a povolený 
  • musíte mať možnosť konfigurovať server -- buďto súborom httpd.conf, alebo svojim súborom .htaccess

Pokiaľ by ani takto pravidlo nefungovalo, kontaktujte našu zákaznícku podporu formou autorizovanej požiadavky.

Príklady nastavenia

Nižšie sme pre vás pripravili niekoľko najčastejšie používaných príkladov pre presmerovanie pomocou mod_rewrite. Do konfiguračného súboru .htaccess stačí vložiť príslušný kód:

Jednoduché presmerovanie

Ak budete chcieť, aby sa stránka http://moja-domena.sk/pozadovany-subor.html presmerovala na http://moja-domena.sk/vysledny-subor.html.

RewriteEngine on
RewriteRule   pozadovany-subor\.html   /vysledny-subor.html   [R]

 

Jednoduché podstrčenie obsahu

Miesto zadanej stránky sa potom objaví obsah podstrčenej stránky. Zadaná adresa v prehliadači viacmenej ostáva rovnaká.

RewriteEngine on
RewriteRule zadana-stranka\.html podstrcena-stranka.html

 

Presmerovanie obsahu adresára na hlavnú stránku webu

Pravidlo, ktoré presmeruje všetko z aktuálneho adresára (v ktorom je .htaccess) na hlavnú stránku www.moja-domena.sk.

RewriteEngine on
RewriteRule    (.*)   http://www.moje-domena.cz     [R=301]
 

Presmerovanie aliasovej domény do určitého adresára v roote webu hlavnej domény

RewriteEngine on
RewriteCond %{HTTP_HOST} ^aliasova-domena.sk$
RewriteRule ^(.*)$ http://www.aliasova-domena.sk [R,L]
RewriteCond %{HTTP_HOST} ^www.aliasova-domena.sk$
RewriteCond %{REQUEST_URI} !^/nazov-adresara/
RewriteRule ^(.*)$ /nazev-adresare/$1 [L]

 

Peesmerovanie na doménu s www

Presmerovanie všetkých požiadaviek na doménu s www so zachovaním parametrov v URL

RewriteEngine on
RewriteCond %{HTTP_HOST} ^moja-domena.sk [NC]
RewriteRule (.*) http://www.moja-domena.sk/$1 [R=301,QSA,L]
 

 

Presmerovanie na doménu bez www

Presmerovanie všetkých požiadaviek na doménu bez www so zachovaním parametrov v URL

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.moja-domena.sk
RewriteRule (.*) http://moja-domena.sk/$1 [R=301,QSA,L]

 

Presmerovanie z http na https protokol

Nastaví automatické presmerovanie webu na zabezpečený protokol https.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 

 

Presmerovanie všetkého na doménu s www + https

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]


GeoIP modul pro blokování přístupů

Toto nastavenie blokuje požiadavky smerujúce na súbor wp-login.php a xmlrpc.php (najčastejšie zdroje útokov). Môžete takto nape. zamedziť prístup do konkrétneho adresára s citlivými dátami.

<IfModule mod_geoip.c>
<FilesMatch "wp-login.php|xmlrpc.php">
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(CZ|SK)$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE_V6} !^(CZ|SK)$
RewriteRule ^(.*)$ - [F,L]
</FilesMatch>
</IfModule>

Kódy štátov sú definované podľa štandardu ISO 3166-1 (alpha-2).

Takto bude vyzerať zápis výnimky len pre Slovenskú Republiku:

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(SK)$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE_V6} !^(SK)$

Kombinácia výnimiek pre CZ, SK, DE:

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(CZ|SK|DE)$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE_V6} !^(CZ|SK|DE)$

Oficiálna dokumentácia modulu GeoIP je k dispozícii na webových stránkach MaxMind: http://dev.maxmind.com/geoip/legacy/mod_geoip2/

 

Prevencia SQL útokov

SQL Injection je technika namierená proti (nie len) webovým aplikáciám využívajúcim SQL databázu. Myšlienkou je databázu podstrčiť dáta, napríklad v URL alebo prostredníctvom formulára, ktoré následne databáza vykoná. Blokovanie podobných pokusov zaistí tento kód:

RewriteCond %{QUERY_STRING} ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC]
RewriteRule .* - [F]

 

Linkovanie obrázkov

Mod_rewrite sa dá jednoducho využiť tiež pre zamedzenie prehliadania obrázkov z cudzích serverov. V princípe ide len o to, že skontrolujeme, či požiadavka priľla z nejakého cudzieho servera a v prípade, že požaduje obrázok, podstrčíme mu nejaký iný (napr. prázdny). Takto ľahko zabránite používániu svojich obrázkov na cudzích stránkach a nikto vám nebude zvyšovať traffic.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://example.com.*$
RewriteCond %{HTTP_REFERER} !^http://www.example.com.*$
RewriteRule .*.(gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)$ http://www.example.com/bad.gif [L,R]

 

Odkaz na zaujímavý článok s ďalšími príkladmi prikladáme nižšie:

https://www.interval.cz/clanky/mod_rewrite-pro-hezka-url-rewriteengine-a-rewriterule/

Príznaky v hranatých zátvorkách

V príkladoch použitia mod_rewrite sa na konci pravidiel často používajú príznaky v hranatých zátvorkách (tzv. flags).

[L] - Značí posledné pravidlo, nič ďalej sa neprepisuje.

[QSA] - Do prepísanej / presmerovanej adresy pridá za otaznik všetko, čo je za otáznikom v pôvodnej požiadavke  (query string). QSA v skratke znamená "query string append". V prípade ak naopak chcete query string useknúť, ukončite druhý parameter otáznikom.

[R] - Bude sa presmerovávať (s kódem 302), nie podstrkávať

[R=301] - Presmerovanie pôjde s http kódom 301.

[F] - Nastavuje kód 403 - zakázané. V kombinácií s dobrou RewriteCond umožňuje podmienene zakázať niektoré URL.

[T=mime-typ] - Umožňuje výsledok poslať s iným mime-typeom. Použiteľné hlavne pri presmerovaní na binárne súbory.

[NC] - Nezáleží na veľkosti písmen (vhodné hlavne do riadku RewriteCond).

Viac príznakov v hranatých zátvorkách sa oddeľuje čiarkou.