Že eno napačno pravilo zadošča, da spletna stran ni dosegljiva ali da obiskovalca pošlje v neskončen krog preusmeritev. Preusmeritev s .htaccess zato ni le vstavljanje ene vrstice kode: pomembni so ciljni URL, koda stanja in vrstni red pravil.
Ni vedno jasno, kje je datoteka .htaccess ali kdaj je vredno uporabiti preusmeritev 301 oziroma 302. Na spletnem strežniku Apache lahko datoteka vsebuje nastavitve mape in njenih podmap. Za delovanje mora konfiguracija Apacha dovoliti njeno uporabo. V cPanelu lahko datoteko urejaš z upraviteljem datotek, če strežniško okolje podpira potrebna pravila.
Vodnik prikaže, kako deluje preusmeritev s .htaccess, katera pravila je mogoče uporabiti v pogostih situacijah in v čem se začasna preusmeritev razlikuje od trajne. Vodimo te tudi skozi postopek varne spremembe, od varnostne kopije do ciljnega testiranja in razveljavitve spremembe. Tako lahko pred objavo preveriš ciljni URL, kodo odgovora in morebitne zanke preusmeritev.
Kaj je preusmeritev s .htaccess in kdaj jo lahko uporabiš?
Preusmeritev s .htaccess je pravilo na strani strežnika Apache, ki dohodno zahtevo usmeri na drug URL ali pot. Strežnik brskalniku pošlje odgovor z novim naslovom, brskalnik pa nato zahteva ciljno stran. Pravila datoteke veljajo na ravni mape, če jih konfiguracija Apacha dovoljuje.
Preusmeritev je koristna na primer, ko se spremeni naslov strani, ko želiš obiskovalce namesto na ukinjeno podstran usmeriti na ustrezno novo vsebino ali ko bi naslov HTTP preusmeril na HTTPS. Strežnik lahko opravi tudi notranje prepisovanje URL-ja. V tem primeru zahtevo v ozadju streže po drugi poti, URL v naslovni vrstici brskalnika pa se ne spremeni nujno. Operaciji torej nista enaki.
Rešitev na strani brskalnika, na primer samodejno posredovanje strani HTML, se izvede šele po nalaganju strani. Preusmeritev na strani aplikacije lahko upravlja programska koda spletnega mesta. Pregled preusmeritev URL predstavi te pristope in možnosti, povezane z Apachem. Prednost preusmeritve s .htaccess je, da pravilo velja med obdelavo zahteve na strežniku, brez spreminjanja kode aplikacije.
- Stara stran se seli na nov naslov in obiskovalce je treba pripeljati do nove vsebine.
- Želiš uporabljati eno samo različico naslova spletnega mesta, na primer s predpono www ali brez nje.
- Nešifrirane zahteve HTTP bi preusmeril na naslov HTTPS.
- Namesto ukinjene poti bi določil vsebinsko ustrezno stran.
Kje je datoteka .htaccess?
Korenska mapa spletnega mesta je mapa, iz katere se začne streženje glavne spletne vsebine. Pravila datoteke .htaccess v njej lahko veljajo tudi za podmape. Lastna datoteka podmape lahko velja za to mapo in njene podmape. Ime datoteke se začne s piko, zato jo nekateri upravitelji datotek privzeto skrijejo. V cPanelu lahko mape spletnega mesta poiščeš z upraviteljem datotek. Preveri tudi prikaz skritih datotek.
V katerem strežniškem okolju deluje .htaccess?
Datoteko .htaccess je mogoče uporabiti za nastavitve spletnega strežnika Apache na ravni mape. Osrednja konfiguracija Apacha določa, katere direktive lahko datoteka vsebuje. Zato pravilo ne deluje nujno, tudi če je datoteka na pravem mestu in je njena sintaksa pravilna. Za nekatere preusmeritve je potreben tudi modul mod_rewrite. Nginx pravil .htaccess ne uporablja, tam je treba preusmeritev navesti v drugi konfiguraciji strežnika.
Kako delujejo pravila preusmeritve v datoteki .htaccess?
Pravilo preusmeritve s .htaccess določa, kakšen odgovor naj Apache da na zahtevo in na kateri novi naslov naj po potrebi preusmeri obiskovalca. Za preprosto zamenjavo naslova običajno zadošča direktiva Redirect. Za zapletenejše pogoje, na primer ujemanje vzorcev, je mogoče uporabiti RewriteRule. Poti in domenska imena v primerih prilagodi svojemu spletnemu mestu.
301 ali 302: katero kodo preusmeritve izbrati?
Koda 301 označuje trajno spremembo naslova. Izberi jo, če se je stran dokončno preselila na nov URL. Koda 302 označuje začasno preusmeritev, na primer pri kratkem testu ali prehodni spremembi. Če pri dokončni selitvi uporabiš 302, lahko brskalniki in drugi sistemi spremembo razumejo kot začasno. Kodo zato izberi glede na dejanski namen selitve.
Koda
Namen
Sporočilo
Tipična uporaba
301
Trajna preusmeritev
Naslov se je trajno spremenil
Dokončna selitev strani ali domene
302
Začasna preusmeritev
Stari naslov bo pozneje spet v uporabi
Prehodna preusmeritev ali testiranje
Redirect ali RewriteRule: kdaj je potrebno katero pravilo?
Redirect je direktiva modula mod_alias v Apachu. Uporabna je za preprosto, nedvoumno preusmeritev, na primer takole:
Redirect 301 /regi-oldal https://pelda.hu/uj-oldal
RewriteRule je del modula mod_rewrite in poti ujema prilagodljiveje. Za uporabo je treba vklopiti RewriteEngine. Spodnji primer preusmeri navedeno pot:
RewriteEngine On
RewriteRule ^regi-oldal/?$ https://pelda.hu/uj-oldal [R=301,L]
V primeru R=301 označuje trajno preusmeritev, L pa, naj Apache za trenutno zahtevo ne obdeluje več poznejših pravil. Za začasno preusmeritev zamenjaj vrednost R z 302. Modul mod_rewrite in potrebne direktive morajo biti v konfiguraciji Apacha dovoljeni, sicer pravilo ne deluje ali lahko povzroči napako strežnika. Več primerov najdeš o nastavitvi preusmeritev 301 v datoteki .htaccess.
Pred objavo preveri izvorno pot, ciljni naslov in kodo stanja. Na gostovanju cPanel lahko datoteko urejaš z upraviteljem datotek, delovanje pravila pa preizkusi posebej.
Katera preusmeritev s .htaccess ustreza pogostim situacijam spletnih strani?
Pravo pravilo je odvisno od tega, kaj se spreminja: domensko ime, protokol povezave ali pot konkretne strani. V spodnjih primerih namesto pelda.hu vpiši svojo domeno, poti pa prilagodi dejanskim naslovom spletnega mesta. Pravilo je varno, če ciljna stran obstaja in je pot od starega naslova do nje nedvoumna.
Preusmeritev celotne domene, www in HTTPS
Naslov z www in brez www sta dve ločeni imeni gostitelja. Izberi glavno različico, na primer naslov www.pelda.hu, in nanjo preusmeri drugo. Spodnje pravilo nešifrirane zahteve in naslove brez www v enem koraku pošlje na različico z www in HTTPS. Postavi ga v datoteko .htaccess spletnega mesta, ki obravnava te zahteve.
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\.pelda\.hu$ [NC]
RewriteRule ^ https://www.pelda.hu%{REQUEST_URI} [R=301,L]
Na HTTPS preusmeri le, če na ciljnem naslovu deluje povezava SSL/TLS in je nastavljeno veljavno potrdilo. Sicer lahko obiskovalec vidi napako potrdila. Preden pravilo shraniš, neposredno odpri različico HTTPS in preveri, ali se stran naloži. O vlogi potrdil in šifrirane povezave daje več informacij pregled SSL/TLS.
Če za glavnega izbereš naslov brez www, spremeni ciljnega gostitelja in mu prilagodi tudi pogoj ujemanja. Ne uporabljaj hkrati dveh nasprotujočih si pravil. Če na primer naslov brez www preusmerja na www, naslov z www pa nazaj, lahko nastane zanka preusmeritev.
Selitev strani ali mape na nov naslov
Pri selitvi enega članka ali podstrani preusmeri le staro pot na vsebinsko ustrezen nov naslov. Na primer, https://pelda.hu/regi-cikk naj bo vir, https://pelda.hu/uj-cikk pa cilj:
RewriteRule ^regi-cikk/?$ https://pelda.hu/uj-cikk [R=301,L]
Pri premikanju mape se odloči, ali je treba ohraniti poti podmap. Spodnji primer naslov /hirek/2025/anyag preusmeri na pot /blog/2025/anyag in tako ohrani del poti za imenom mape:
RewriteRule ^hirek/(.*)$ /blog/$1 [R=301,L]
Pri WordPressu so lahko v datoteki tudi lastna pravila prepisovanja sistema za upravljanje vsebin. Preusmeritev po meri postavi pred njih, da zahteva najprej gre skozi ciljno pravilo. Pred spremembo preveri obstoječe vnose in nastavitve trajnih povezav. Podrobnosti okolja gostovanja, ki ga WordPress potrebuje za delovanje, ti pomaga pregledati predstavitev rešitev spletnega gostovanja.
Kako preusmeritev varno nastaviš in preizkusiš?
Varna sprememba je sestavljena iz štirih korakov: shrani izvirno datoteko, dodaj eno samo pravilo, preveri njegovo delovanje in po potrebi obnovi prejšnje stanje. Preusmeritev s .htaccess je lažje obvladljiva, če naenkrat narediš le eno spremembo. Ob napaki tako lažje najdeš problematično vrstico.
Pred spremembo datoteke naredi varnostno kopijo, ki jo lahko obnoviš
Naredi kopijo izvirne datoteke .htaccess in jo hrani na mestu, od koder jo lahko po potrebi obnoviš. Vsebino datoteke lahko shraniš tudi v ločen besedilni dokument. Izvirnik hrani, dokler novo pravilo ne deluje pravilno.
V upravitelju datotek obstoječo datoteko prenesi ali preimenuj, nato naredi njeno kopijo in delaj na njej. V cPanelu ti pri upravljanju datotek spletnega mesta pomaga upravitelj datotek. Predstavitev vmesnika najdeš tudi med možnostmi gostovanja cPanel. Ne briši in ne prepisuj hkrati več med seboj neodvisnih pravil. Posebej preveri novo vrstico in tudi njeno okolico.
Dodaj ciljno pravilo in ga preizkusi
Spodnji primer za Apache preusmeri eno samo pot. Za uporabo mod_rewrite je treba vklopiti RewriteEngine, modul in direktiva pa morata biti v danem okolju dovoljena.
RewriteEngine On
RewriteRule ^regi-oldal/?$ https://pelda.hu/uj-oldal [R=301,L]
Namesto /regi-oldal vpiši svojo izvorno pot, namesto ciljnega naslova pa novi URL. Po shranjevanju odpri neposredno stari naslov, ne le domače strani. Delovanje preveri za vsako zahtevo posebej in ne predpostavljaj, da sprememba začne veljati šele po določenem času.
Preveri kodo odgovora, ciljni naslov in zanke
Test posameznega pravila in preverjanje celotnega spletnega mesta sta dve ločeni nalogi. Najprej na starem URL-ju preveri, ali odgovor vrne pravo kodo stanja in vodi natanko na želeni cilj. Nato posebej odpri novi naslov in preizkusi glavno navigacijo ter nekaj pomembnih podstrani. Pri trajni selitvi pričakuj odgovor 301, v prehodni situaciji 302.
- Veriga preusmeritev: izvirni naslov vodi na vmesni URL, nato na še en naslov. Če je mogoče, preusmeri neposredno na končni cilj.
- Zanka preusmeritev: dva ali več naslovov kaže drug na drugega, zato brskalnik ne pride do strani, ki bi se naložila.
- Napaka strežnika: če stran po spremembi vrne napako ali se ne naloži, obnovi shranjeno datoteko in preveri sintakso pravila ter dovoljene direktive.
Pri testiranju preveri stari URL, ciljno stran in tudi glavne poti spletnega mesta. Če preusmeritev ne deluje, kot si pričakoval, ne dodajaj naključno novih pogojev. Obnovi shranjeno datoteko in preverjanje začni znova z eno samo spremembo.
Kaj storiti, če preusmeritev s .htaccess povzroči napako?
Če spletna stran po dodajanju pravila ne deluje pravilno, najprej prepoznaj simptom. Napaka strežnika 500 lahko kaže na težavo s konfiguracijo ali sintakso, napačna ciljna stran na napačno pot, ponavljajoča se preusmeritev pa na pravila, ki vplivajo drugo na drugo. To so različne napake, zato ne spreminjaj naključno več vrstic hkrati. Pri popravljanju preusmeritve s .htaccess je razveljavitev zadnje spremembe najvarnejše izhodišče.
Pri napaki 500 ali napačnem nalaganju strani
Obnovi zadnjo delujočo datoteko .htaccess, da bo spletno mesto spet dosegljivo. Nato preglej zapis dodane direktive, oklepaje, zastavice in ciljni URL. Tudi pravilo s pravilno sintakso lahko povzroči napako, če strežniško okolje direktive ali modula ne dovoli. Ne predpostavljaj, da je vsako nastavitev Apacha mogoče uporabiti na ravni mape.
Dnevnik napak ti lahko pomaga ugotoviti, pri kateri zahtevi ali datoteki se je pojavila težava. Poišči vnose, povezane s časom spremembe, in jih primerjaj s trenutno vsebino datoteke. Brez vnosa v dnevniku ne sklepaj na en sam konkreten vzrok. Če napaka po obnovi stare različice izgine, pravilo preveri ločeno od drugih sprememb.
Pri neskončni preusmeritvi ali napačnem cilju
Če brskalnik javi preveč preusmeritev, preveri, ali dve pravili istih naslovov ne pošiljata drug na drugega. Lahko se na primer zgodi, da eno pravilo različico z www preusmeri na naslov brez www, drugo pa predpiše nasprotno smer. Preveri tudi, ali ciljni URL znova ne ustreza pogoju, ki se ujema z virom. V tem primeru se lahko pravilo sproži znova in znova.
Pri napačni ciljni strani primerjaj zahtevano pot s ciljem, navedenim v pravilu. Preveri imena map, poševnice in ali je cilj relativen ali celoten URL. V verigi so lahko tudi vmesni naslovi, zato do konca sledi, skozi katere URL-je gre zahteva.
- Začasno odstrani ali razveljavi prizadeto pravilo in preveri, ali se je želeno delovanje povrnilo.
- Preizkusi eno samo pravilo s konkretnim izvornim in ciljnim naslovom.
- Če je test uspešen, postopoma obnovi druge spremembe in po vsakem koraku preveri rezultat.
Če se sintaksa zdi pravilna, napaka pa ostane tudi po obnovi, preveri strežniško okolje in vnose v dnevniku. Ustrezna konfiguracija Apacha in možnosti upravljanja datotek na gostovanju olajšajo pregledno vzdrževanje pravil. Spoznaj rešitve spletnega gostovanja aWh, če iščeš okolje gostovanja, ki ustreza tvojemu spletnemu mestu.
Vzpostavi dosledno prakso preusmeritev
Preusmeritev s .htaccess ni enkratna nastavitev, če se naslovi spletnega mesta sčasoma spreminjajo. Zapiši, kam vodi katera stara pot in zakaj je pravilo potrebno. Tako pozneje lažje prepoznaš zastarele vnose in manjša je verjetnost, da nova sprememba prepiše prejšnje delovanje. Evidenca je koristna tudi, če datoteke spletnega mesta ureja več ljudi.
Zanesljivo okolje gostovanja je pomembna osnova vsakodnevnega delovanja spletnega mesta. aWh z več kot 10 leti izkušenj ponuja spletno gostovanje, gostovanje cPanel in VPS. Varnostna kopija in dvostopenjska prijava sta lahko prav tako merili pri izbiri gostovanja.
Če iščeš rešitev gostovanja, ki ustreza tvojemu spletnemu mestu, si oglej rešitve spletnega gostovanja aWh. Samodejna varnostna kopija, HTTPS in dvostopenjska prijava lahko pomagajo, da je upravljanje gostovanja in spletnega mesta varnejše.
Pogosta vprašanja o preusmeritvi s .htaccess
Ali preusmeritev s .htaccess deluje tudi na strežniku Nginx?
Ne, Nginx sam po sebi datotek .htaccess za Apache ne bere in ne uporablja. Preusmeritev je treba navesti v lastni konfiguraciji strežnika Nginx. Če nisi prepričan, kateri spletni strežnik obravnava zahteve, preveri nastavitve gostovanja. V mešanem sistemu je pomembno tudi, skozi kateri strežnik gre zahteva najprej, saj se lahko preusmeritev zgodi tudi v drugi plasti.
Kaj se zgodi, če je v datoteki .htaccess napačna sintaksa?
Napačna direktiva ali sintaksa lahko pri Apachu povzroči napako strežnika 500 in prepreči nalaganje več strani. Natančen učinek je odvisen od tega, kje je napaka in kako strežnik obdela konfiguracijo. Če se napaka pojavi po spremembi datoteke, obnovi prejšnjo delujočo različico. Nato preglej vnos v dnevniku in posebej preveri spremenjeno vrstico.
Ali preusmeritev ohrani parametre poizvedbe?
Pogosto da, vendar je to odvisno od uporabljene direktive Apacha in oblike ciljnega URL-ja. Parameter ?ref=novice lahko na primer sledi preusmeritvi, če pravilo dela poizvedbe ne zamenja ali odstrani. Preizkusi tudi z naslovom, ki vsebuje več parametrov, na primer kodo za sledenje in filter. Preveri, ali ciljna stran dobi pričakovane vrednosti.
Ali je mogoče nastaviti preusmeritev le za določeno poddomeno?
Da. S pogojem RewriteCond %{HTTP_HOST} pred pravilom lahko preveriš, na katero poddomeno je prišla zahteva. Pogoj, vezan na ime gostitelja shop.pelda.hu, lahko na primer izključi glavno domeno in druge poddomene. Ime gostitelja natančno prilagodi želenemu naslovu in preveri obravnavo velikih in malih črk. Tako preusmeritev velja le za zahteve prizadete poddomene.
Kako začasno izklopiš pravilo .htaccess?
Pred pravilo postavi lojtro (#), tako ga Apache obravnava kot komentar in ga ne izvede. Če k pravilu spadajo tudi vrstice s pogoji, izklopi tudi te, sicer lahko preostali pogoj vpliva na drugo pravilo. Pred spremembo shrani izvirno datoteko. Po preizkusu odstrani lojtro, če želiš pravilo znova vklopiti.
Zakaj se preusmeritev po spremembi pravila ne spremeni?
Mogoče je, da je brskalnik ohranil rezultat prej prejete trajne preusmeritve. Poskusi URL odpreti v zasebnem oknu brskalnika ali v drugem brskalniku. Če tudi tam velja stara pot, preveri, ali si spremenil pravo datoteko .htaccess in ali zahtevo res obravnava Apache. Na test lahko vpliva tudi vmesni predpomnilnik ali nastavitev aplikacije.
Ali je mogoče za podmapo uporabiti ločeno datoteko .htaccess?
Da. Direktive v lastni datoteki .htaccess podmape lahko veljajo za zahteve te mape, če konfiguracija strežnika to dovoljuje. V datoteki v mapi /webshop/ lahko na primer urejaš poti spletne trgovine, ne da bi isto pravilo uporabil za celotno spletno mesto. Na delovanje lahko vplivajo tudi nastavitve nadrejene mape, zato preizkušaj na prizadeti poti.