Bezplatný online kurz .htaccess - presmerovanie URL (k tejto téme) nájdete v akadémii učím sa online.
Čo je .htaccess?
Konfiguračný súbor .htaccess slúži bežným užívateľom na úpravu niektorých vlastností Apache servera bez nutnosti osloviť (a platiť) skúseného programátora, webmastra alebo administrátora servera. Medzi vlastnosti, ktoré je možné jednoducho meniť, určite patrí:
- presmerovanie stránok (URL adries) - dôležité z hľadiska SEO (optimalizácie webstránok)
- zakázanie prístupu z určitých IP adries alebo naopak povolenie určitých IP adries - bezpečnosť
- nastavenie chybových stránok (404) - tiež patrí k optimalizácii webstránok
- ochrana adresára heslom
- komprimácia (zmenšenie) súborov pre rýchlejšie načítanie webstránok
- nastavenie inej východzej stránky ako "index.php" a tak podobne
Súbor .htaccess je umiestnený v určitom priečinku a umožňuje upravovať správanie adresára, ktorý sa následne správa inak ako nastavil webmaster alebo administrátor servera. Na serveri môžete mať viac ".htaccess" súborov - v každom podadresári vždy maximálne jeden (alebo žiadny). Príkazy sa dedia z nadriadeného priečinka, čo niekedy môže byť problém. Vtedy stačí vytvoriť samostaný ".htaccess" pre podadresár, nastaviť iné správanie a problém je vyriešený. Jednoduché.
.htaccess - presmerovanie URL
Ako vytvoriť .htaccess?
V ľubovolnom adresári vo svojom PC s Windows 10 kliknite pravým tlačítkom, vyberte možnosť "Nový" > "Textový dokument" a zmeňte jeho názov (Windows 10 vytvorí "Nový textový dokument.txt") na .htaccess - pozor, Windows 10 ho automaticky premenuje na ".htaccess.txt", takže ho treba ešte raz premenovať (vymazať ".txt"), musí sa volať iba ".htaccess" (malými písmenami) - nijak inak, to je dôležité. V niektorých operačných systémoch (napr. Linux, Unix a podobne) sa súbory začínajúce bodkou považujú za skryté. Preto, aj keď ho skopírujete cez FTP na server, nemusíte ho vidieť, ale môže byť skrytý. Nezľaknite sa, je to len nastavením FTP klienta (napr. WinSCP, Total Commander atď.) - voľba zobraziť skryté súbory.
Štruktúra príkazov v .htaccess
Nebojte sa, nebudem tu písať rozsiahle poučky ktorým nikto nerozumie, iba najdôležitejšie veci:
Príklad príkazu: RewriteCond %{QUERY_STRING} ^(.*)$
Vysvetlivky:
prvá časť %{QUERY_STRING} zapíše reťazec dopytu do premennej %
%1 teda bude prvá hodnota (premenná)
druhú časť ^(.*)$ chceme priradiť
^ znamená začať; (.*) znamená ľubovolný znak; $ znamená končiť
ak potrebujeme niečo okomentovať, použijeme # na začiatku riadku
Ďalej budeme používať parametre:
[L] znamená, že ďalší preklad adresy nebude potrebný – pokiaľ sa adresa raz presmeruje, nebude sa už skúšať v ďalších podmienkach, pokiaľ by ste na seba vzájomne presmerovali dve stránky, presmerovanie by sa nikdy neskončilo
[R] znamená dočasné presmerovanie (302)
[R=301] znamená trvalé presmerovanie
[QSA] znamená, že do výslednej adresy sa má pridať aj reťazec s otáznikom
[NC] znamená, že nie je potrebné rozlišovať veľkosť písmen
Zapnutie príkazu: RewriteEngine On
Upozornenie: tento príkaz zadajte v každom ".htaccess" iba raz!
#SoftverNaMieru
#tak už poďme presmerovávať - praktické príklady z našej webstránky:
#jednoduché presmerovanie starej adresy
#príklad: (https://www.softver-na-mieru.sk/stara-stranka)
#na novú URL (https://www.softver-na-mieru.sk/nova-stranka)
RevriteEngine On
RewriteRule ^stara-stranka$ "https://www.softver-na-mieru.sk/nova-stranka" [R=301,L]
#všimnite si znak $ ktorý znamená, že sa presmeruje iba webstránka končiaca reťazcom "stara-stranka"
#ak by sme chceli presmerovať webstránky kde reťazec "stara-stranka" nie je na konci, príkaz bude vyzerať takto
RewriteRule ^stara-stranka "https://www.softver-na-mieru.sk/nova-stranka" [R=301,L]
#ďalej nezobrazovanie URL adresy s otáznikom - Query String
#potrebujeme presmerovať starú stránku s parametrom - to čo je za otáznikom
#príklad: (https://www.softver-na-mieru.sk/stranka?start=7)
#na novú URL adresu bez parametra (https://www.softver-na-mieru.sk/stranka)
RewriteCond %{QUERY_STRING} ^start=(.*)$ [NC]
RewriteRule ^ https://www.softver-na-mieru.sk%{REQUEST_URI}? [R=301,L]
#pokračujeme s presmerovaním - nezobrazovaním index.php
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
#alternatíva presmerovania index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://www.softver-na-mieru.sk/ [R=301,L]
#redirect alebo presmerovanie webstránky z www na adresu bez www:
RewriteCond %{HTTP_HOST} ^www\.softver-na-mieru\.sk [NC]
RewriteRule ^(.*)$ https://softver-na-mieru.sk/$1 [L,R=301]
#redirect alebo presmerovanie webstránky bez www na adresu s www:
RewriteCond %{HTTP_HOST} ^softver-na-mieru\.sk [NC]
RewriteRule ^(.*)$ https://www.softver-na-mieru.sk/$1 [L,R=301]
#presmerovanie URL bez koncovej lomky "/" - čo spôsobuje duplicitný obsah ktorý Google penalizuje,
#príklad: (https://www.softver-na-mieru.sk/stranka/)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
#blokovanie konkrétnej IP adresy 10.95.47.212
Deny from 10.95.47.212
#blokovanie IP adries začínajúce 10.95
Deny from 10.95
#povolenie konkrétnej IP adresy 10.95.47.212
Allow from 10.95.47.212
#kompresia súborov text, HTML, JavaScript, CSS, XML
AddOutputFilterByType DEFLATE text / htm
AddOutputFilterByType DEFLATE text / html
AddOutputFilterByType DEFLATE text / xml
AddOutputFilterByType DEFLATE text / css
AddOutputFilterByType DEFLATE text / plain
AddOutputFilterByType DEFLATE application / xml
AddOutputFilterByType DEFLATE application / xhtml + xml
AddOutputFilterByType DEFLATE application / rss + xml
AddOutputFilterByType DEFLATE application / javascript
AddOutputFilterByType DEFLATE application / x-javascript
A na záver taká drobnosť - ak niečo zmeníte v .htaccess a hneď to nefunguje, skúste najskôr vyčistiť Vyrovnávaciu pamäť (cash) svojho prehliadača (klávesová skratka: ctrl+shift+del).
Ak sa vám tento článok páčil/nepáčil, vyjadrite svoj názor, sme zvedaví :)