Alat · Selidba
Generator 301 preusmerenja za nginx i .htaccess
Nalepite parove stara i nova adresa, a generator napravi 301 pravila za nginx i za Apache (.htaccess) i pre toga proveri lance, petlje i duplikate. Sve radi u vašem pregledaču: adrese se ne šalju i ne pamte. Pravila proverite na probnoj kopiji pre objave, jer generator ne vidi pravila koja već stoje na vašem serveru.
Ulaz
Opciono. Pun domen sa https://.
Popunite samo ako se domen menja.
Jedan par po redu: stara adresa, pa nova, razdvojene razmakom, tabom, zarezom, tačka-zarezom ili strelicom (->). Dve kolone iz Excela nalepite direktno. Ako sadržaja više nema, umesto nove adrese upišite 410. Redovi koji počinju sa # se preskaču.
Adrese sa srpskim slovima možete da upišete i sa kvačicama i u procentnom zapisu (%C4%8D); generator ih poredi isto kao server.
Opcije
Pravilo pokriva oba oblika. Ne važi za fajlove, odnosno za adrese sa tačkom u poslednjem delu (.html, .pdf).
nginx map ih ionako ne razlikuje; za Apache se dodaje zastavica NC.
Radi samo kada je upisan novi domen.
Provere
Pravila
Pokrenite komande posle objave. Svaka ispisuje kod odgovora i odredište; uporedite ih sa očekivanim.
Za komande za proveru upišite stari domen; bez njega generator ne zna koji sajt da proverava.
- Proverite i varijante sa http:// i sa www. ispred domena, ne samo https adresu bez www.
- Ako rezultat izgleda zastarelo, dodajte --compressed i otvorite adresu u privatnom prozoru: keš hostinga može da čuva posebne verzije za zahteve sa kompresijom i bez nje.
- Pregledač pamti 301, pa ponovljenu proveru u pregledaču radite u privatnom prozoru.
Pravila proverite na probnoj kopiji pre objave. Generator ne vidi vaš server: ne zna koja pravila tamo već postoje.
Adrese se ne šalju i ne pamte. U ovom pregledaču ostaju samo podešavanja: server, kod i opcije.
Kako se koristi
- Upišite domene. Stari domen, na primer
https://stari.rs, i novi, ako se domen menja. Ako ostajete na istom domenu, drugo polje ostavite prazno. - Nalepite parove adresa, jedan par po redu: stara adresa, pa nova, razdvojene razmakom, tabom, zarezom, tačka-zarezom ili strelicom (
->). Dve kolone iz Excela nalepite direktno. Adrese mogu biti pune (https://stari.rs/o-nama.html) ili samo putanje (/o-nama.html). Ako sadržaja više nema, umesto nove adrese upišite410. Redovi koji počinju sa#se preskaču. - Izaberite server i opcije, pregledajte provere, pa pravila kopirajte ili preuzmite kao fajl. Uz pravila dobijate i komande za proveru posle objave.
Spisak adresa i odluku za svaku adresu pripremate pre ovoga; kako, piše u vodiču Prelazak na novi sajt. Stavke A3 do A6 na checklisti pred objavu prate ovaj alat: odluka za svaku adresu, trajni kod, jedan skok i bez petlji.
Opcije:
- Kod: 301 (podrazumevano) ili 308. Oba su trajna i Google ih tretira isto; 301 je najšire podržan.
- Parametri upita (
?utm_source=…): zadržite ih (podrazumevano) ili odbacite. - /strana i /strana/ su ista adresa: pravilo pokriva oba oblika, osim za fajlove, odnosno adrese sa tačkom u poslednjem delu, kao
.htmlili.pdf. - Ne razlikuj velika i mala slova: nginx
mapih ionako ne razlikuje, a za Apache se dodaje zastavicaNC. - Ceo domen: sve ostale adrese starog domena idu na istu putanju novog. Radi samo kada je upisan novi domen.
Šta generator proverava
Pre nego što napravi pravila, generator proverava spisak i uz svaki nalaz navodi broj reda:
- Greške zaustavljaju izlaz: ista stara adresa sa dva različita odredišta, adresa koja vodi sama na sebe, petlja (sa A na B, pa sa B na A, ili duža) i pravilo za ceo domen koje bi vodilo na isti domen.
- Upozorenja ne zaustavljaju izlaz: lanac, kada je odredište jednog reda stara adresa drugog (dugme „Skrati lance“ zamenjuje odredište konačnim); adrese koje se razlikuju samo po velikim i malim slovima; više od polovine adresa koje vode na naslovnu; odredište na http umesto na https; odredište na starom domenu; stara adresa sa parametrima upita; vrlo dugačke adrese ili mnogo pravila za nginx.
- Napomene: deo adrese iza
#ne stiže do servera, pa se odbacuje, a odredište bez domena ostaje na istom domenu.
Adrese sa srpskim slovima možete da upišete i sa kvačicama i u procentnom zapisu (%C4%8D). Generator ih poredi isto kao server: nginx i Apache porede putanju posle dekodiranja.
Generator ne vidi vaš server i ne zna koja pravila tamo već stoje. Kod Trubača Stars na serveru je od ranije stajalo pet preusmerenja u suprotnom smeru; da su ostala, novi 301 bi napravio petlju i obe adrese bi prestale da rade. Pre objave zato pregledajte postojeća pravila (Redirect, RewriteRule, return 301) i nova isprobajte na probnoj kopiji. Generator prima do 10.000 redova.
Koji kod: 301, 308, 302 ili 307
Za selidbu i promenu adresa koristite trajno preusmerenje. Googlebot prati i trajna i privremena preusmerenja, ali samo trajno Google uzima kao jak signal da je odredište nova glavna (kanonska) adresa (Google Search Central).
| Kod | Vrsta | Signal za Google | Kada |
|---|---|---|---|
| 301 | trajno | jak signal da je odredište glavna adresa | selidba, promena adresa, http na https, www |
| 308 | trajno | isto kao 301 | isto kao 301 |
| 302 | privremeno | slab signal | privremena strana, na primer dok traju radovi |
| 307 | privremeno | isto kao 302 | isto kao 302 |
Kod 303 Google tretira kao 302 (Google Search Central).
Ako server ne može da vrati 301, Google razume i meta refresh: bez zakašnjenja ga tumači kao trajno, a sa zakašnjenjem kao privremeno preusmerenje. JavaScript preusmerenje koristite samo ako nije moguće ni serversko ni meta refresh.
Lanci: Google-ovi popisivači podrazumevano prate do 10 skokova, ali Google savetuje preusmerenje direktno na konačnu adresu. Ako to ne može, lanac treba da bude što kraći, najbolje do 3 skoka i manje od 5.
Pravila za nginx
Generator pravi fajl koji se učitava u http {} blok, najčešće iz foldera /etc/nginx/conf.d/, i tri reda za server {} blok sajta. Za ovaj ulaz:
/o-nama.html /o-nama/
/usluge.php?id=3 /usluge/servis-klima/
/cenovnik/ /usluge/
/usluge/čišćenje-klima.html /usluge/ciscenje-klima/
/galerija-2019/ 410izlaz izgleda ovako (isti domen https://primer.rs, kod 301, parametri upita se zadržavaju):
# Fajl: /etc/nginx/conf.d/preusmerenja-primer.rs.conf (učitava se u http {})
# Napravljeno 28.09.2026: 4 preusmerenja, 1 uklonjena adresa. Posle izmene: nginx -t && systemctl reload nginx
map $request_uri $ns_upit_primer {
default "";
"/usluge.php?id=3" "https://primer.rs/usluge/servis-klima/";
}
map $uri $ns_preusmeri_primer {
default "";
"/o-nama.html" "https://primer.rs/o-nama/";
"/cenovnik" "https://primer.rs/usluge/";
"/cenovnik/" "https://primer.rs/usluge/";
"/usluge/čišćenje-klima.html" "https://primer.rs/usluge/ciscenje-klima/";
}
map $uri $ns_ukloni_primer {
default 0;
"/galerija-2019" 1;
"/galerija-2019/" 1;
}
# U server {} bloku sajta (443), pre location blokova. Iste redove stavite i u blokove za port 80 i za www,
# pre njihovog opšteg "return 301 https://…", da i stare http i www adrese stignu u jednom skoku.
if ($ns_upit_primer) { return 301 $ns_upit_primer; }
if ($ns_ukloni_primer) { return 410; }
if ($ns_preusmeri_primer) { return 301 $ns_preusmeri_primer$is_args$args; }Šta treba znati:
mapblokovi idu uhttp {}, a redovi saifuserver {}blok, prelocationblokova.- Sufiks promenljivih (
_primer) nastaje iz imena domena, da se mape dva sajta na istom serveru ne sudare. - Mapa za adrese sa upitom poredi
$request_uri, originalnu adresu sa upitom, pa su ključevi u njoj u procentnom zapisu. Mapa putanja poredi$uri, putanju bez upita, u kojoj su slova već dekodirana. - Red za adrese sa upitom stoji pre reda za uklonjene adrese: pravilo za tačan upit je uže od pravila za celu putanju, pa se proverava prvo. Tako
/xsa kodom 410 i/x?id=1sa preusmerenjem rade zajedno. mapporedi nizove bez obzira na velika i mala slova, ali samo za slova bez kvačica:Čičsu za nginx različiti znaci.- Znak
$u odredištu generator piše kao%24, jer bi ga nginx u vrednosti mape pročitao kao promenljivu. - Posle izmene pokrenite
nginx -t, pasystemctl reload nginx. Na većini servera ključ u mapi sme da ima najviše 46 bajtova; za dužu adresunginx -tjavlja grešku omap_hash. Generator tada upozorava i u komentar na vrhu upisuje vrednosti zamap_hash_bucket_sizeimap_hash_max_sizekoje treba dodati uhttp {}. Kod Golden Pets Hotel dugački ključevi u mapi preusmerenja tražili su veću veličinu razdelnika, inače server odbija da se pokrene, sa greškom koja ne pominje nijednu adresu.
Pravila za Apache (.htaccess)
Za isti ulaz:
# Iznad bloka "# BEGIN WordPress" (ako postoji). Fajl u korenu sajta.
# Napravljeno 28.09.2026: 4 preusmerenja, 1 uklonjena adresa.
# Pravila idu pre opštih pravila za https i www u istom fajlu.
# Bez omotača <IfModule mod_rewrite.c>, namerno: ako hosting nema mod_rewrite, greška se vidi odmah.
# Ako je sajt u podfolderu, fajl ide u taj podfolder; proverite RewriteBase.
RewriteEngine On
RewriteCond %{QUERY_STRING} "^id=3$"
RewriteRule "^usluge\.php$" "https://primer.rs/usluge/servis-klima/?" [R=301,NC,L]
RewriteRule "^galerija-2019/?$" - [G,NC]
RewriteRule "^o-nama\.html$" "https://primer.rs/o-nama/" [R=301,NC,L]
RewriteRule "^cenovnik/?$" "https://primer.rs/usluge/" [R=301,NC,L]
RewriteRule "^usluge/čišćenje-klima\.html$" "https://primer.rs/usluge/ciscenje-klima/" [R=301,NC,L]Šta treba znati:
- Pravila idu u
.htaccessu korenu sajta, iznad bloka# BEGIN WordPressako postoji, i pre opštih pravila za https i www. Inače WordPress ili opšte pravilo obradi adresu pre njih. - U
.htaccessputanja stiže bez početne kose crte, pa obrazac^/o-namatu nikad ne pogađa. Zato generator piše^o-nama\.html$. [R]bez broja je privremeno preusmerenje (302), zato uvek stoji[R=301].RewriteRulene vidi parametre upita. Za staru adresu sa upitom generator dodajeRewriteCond %{QUERY_STRING}, a znak?na kraju odredišta briše stari upit. U ostalim pravilima upit se prenosi sam. Pravila sa uslovom na upit idu prva, iz istog razloga kao kod nginx-a.- Ako odredište u upitu ima kodirane znake (na primer
%20), generator ga piše doslovno, sa\%, i dodaje zastavicuNE. Bez toga bi mod_rewrite%2pročitao kao povratnu referencu, a ostatak kodirao još jednom. NCznači da se velika i mala slova ne razlikuju, aGvraća 410.- Pravila nemaju omotač
<IfModule mod_rewrite.c>, namerno: ako hosting nema mod_rewrite, bolje je da se greška vidi odmah nego da preusmerenja tiho ne rade. - Ako je sajt u podfolderu, pravila idu u
.htaccesstog podfoldera; proverite iRewriteBase.
Gotova pravila: https, www, .html i ceo domen
Za česte slučajeve ne treba spisak adresa. Svako pravilo ide direktno na konačnu adresu, da i stara http i www adresa stigne u jednom skoku. Umesto domen.rs, stari.rs i novi.rs upišite svoje domene. Pojedinačna pravila iz generatora idu pre ovih.
Sa http na https i sa www na adresu bez www
nginx: poseban blok za port 80 i poseban za www na 443. Glavni blok za domen.rs na 443 ostaje kakav jeste.
server {
listen 80;
listen [::]:80;
server_name domen.rs www.domen.rs;
return 301 https://domen.rs$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.domen.rs;
ssl_certificate /putanja/do/fullchain.pem;
ssl_certificate_key /putanja/do/privkey.pem;
return 301 https://domen.rs$request_uri;
}Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://domen.rs/$1 [R=301,L]Oba pravila čuvaju putanju. Kod Klimatronika 016 i Zlaje 2015 preusmerenje sa www je gubilo putanju, pa je svaki link ka podstrani završavao na naslovnoj.
Ako je glavna adresa sa www: u nginx-u drugi blok služi za domen.rs, a oba vode na https://www.domen.rs$request_uri; u .htaccess drugi uslov glasi RewriteCond %{HTTP_HOST} !^www\. [NC], a odredište je https://www.domen.rs/$1. Ako je sajt iza proksija ili CDN-a, %{HTTPS} može da bude off i kada posetilac dolazi preko https, pa ovo pravilo pravi petlju; tada pitajte hosting kako server prepoznaje https.
Adrese sa .html na adrese bez nastavka
Kod AutoSet Niš adrese su bez nastavka, a stare adrese sa .html trajno vode na adresu bez nastavka. Kada su sve strane kasnije prepisane iz HTML-a u PHP, adrese su ostale iste.
nginx, u server {} bloku, pre location blokova:
if ($request_uri ~ "^([^?]*/)index\.html(\?.*)?$") { return 301 https://domen.rs$1$2; }
if ($request_uri ~ "^([^?]*)\.html(\?.*)?$") { return 301 https://domen.rs$1$2; }Apache (.htaccess):
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+(.*?/)?index\.html[\s?] [NC]
RewriteRule ^ https://domen.rs/%1 [R=301,L,NE]
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC]
RewriteRule ^ https://domen.rs/%1 [R=301,L,NE]Pravila gledaju originalni zahtev ($request_uri, odnosno THE_REQUEST), a ne putanju posle unutrašnje obrade, pa interno učitavanje fajla index.html ne pravi petlju. Adresa bez nastavka mora da postoji na novom sajtu; ova pravila samo šalju stare adrese na nju. Ako nove adrese završavaju kosom crtom, u drugom pravilu dodajte je u odredište ($1/, odnosno %1/), da ne nastane još jedan skok.
Ceo domen na novi domen
nginx, jedan blok za stari domen, na portovima 80 i 443:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name stari.rs www.stari.rs;
ssl_certificate /putanja/do/stari.rs/fullchain.pem;
ssl_certificate_key /putanja/do/stari.rs/privkey.pem;
return 301 https://novi.rs$request_uri;
}Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTP_HOST} "^(www\.)?stari\.rs$" [NC]
RewriteRule "^(.*)$" "https://novi.rs/$1" [R=301,L]Sertifikat starog domena mora da ostane važeći, inače posetilac sa https://stari.rs vidi upozorenje pre nego što stigne do pravila. Redosled koraka i alat Promena adrese su u vodiču Promena domena.
Kako da proverite da preusmerenja rade
Pregledač nije dobar alat za proveru: pamti 301 i sakriva međukorake. Proveravajte komandom curl, koja pokazuje kod i odredište. Adresa stoji pod jednostrukim navodnicima, da terminal znake kao $ i ! ne protumači na svoj način:
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" 'https://primer.rs/o-nama.html'
# očekivano: 301 https://primer.rs/o-nama/Na Windowsu, u PowerShell-u, pišite curl.exe umesto curl i NUL umesto /dev/null:
curl.exe -s -o NUL -w "%{http_code} %{redirect_url}\n" 'https://primer.rs/o-nama.html'Ceo lanac, sa svakim skokom, pokazuje ova komanda; u izlazu treba da bude samo jedna linija location:.
curl -sIL 'http://www.primer.rs/o-nama.html'Generator za svaki red pravi ovakvu komandu, sa očekivanim rezultatom, a spisak možete da sačuvate i kao CSV za arhivu.
Proverite i varijante sa http:// i www., ne samo https adresu bez www. Ako rezultat izgleda zastarelo, ponovite komandu sa --compressed i otvorite adresu u privatnom prozoru. Kod La Sylphide keš hostinga je posle prelaska čuvao posebne verzije za zahteve sa kompresijom i bez nje, pa je provera običnom komandom pokazivala staro.
Ako želite da preusmerenja postavim i proverim ja, pošaljite upit.
Izvori
Google Search Central, provereno 28. 9. 2026. Strane su na engleskom.
- Preusmerenja i Google pretraga (Redirects and Google Search)
- HTTP statusi i Google (HTTP status codes)
- Selidba sajta sa promenom adresa (Site move with URL changes)
Dokumentacija servera: Apache mod_rewrite, zastavice za RewriteRule i mod_alias; nginx map, osnovni modul i rewrite.
Primeri iz prakse su iz mojih studija slučaja na svilenkovic.rs.
Česta pitanja
Koja je razlika između 301 i 302?
301 je trajno, a 302 privremeno preusmerenje. Google trajno preusmerenje uzima kao jak signal da je odredište nova glavna adresa, a privremeno kao slab signal, pa u rezultatima može da ostane stara adresa. Za selidbu i promenu adresa koristite 301 ili 308, koji Google tretira isto.
Zašto 301 u .htaccess ne radi?
Česti razlozi: hosting nema uključen mod_rewrite; pravila stoje ispod bloka „# BEGIN WordPress“, pa WordPress obradi adresu pre njih; obrazac počinje kosom crtom (^/), a u .htaccess putanja stiže bez nje; pregledač pamti stari 301; keš hostinga služi staru verziju. Proveravajte komandom curl i u privatnom prozoru, ne samo u običnom prozoru pregledača.
Kako da preusmerim ceo domen na novi?
Posebnim server blokom za stari domen (nginx) ili pravilom sa uslovom na host (.htaccess), koje svaku adresu starog domena šalje na istu putanju novog, uz važeći sertifikat za stari domen. Isečci su na ovoj strani, u odeljku sa gotovim pravilima, a generator ih pravi kada upišete oba domena i uključite opciju za ceo domen.
Kako preusmeriti http na https i www na adresu bez www?
Jednim pravilom koje ide direktno na konačnu adresu i čuva putanju, da stara http i www adresa stigne u jednom skoku. Za nginx su to server blokovi za port 80 i za www sa return 301 https://domen.rs$request_uri, a za Apache dva uslova, na HTTPS i na HTTP_HOST, i jedno pravilo RewriteRule. Oba isečka su na ovoj strani.
Koliko dugo da ostavim preusmerenja?
Google savetuje da preusmerenja ostanu što duže, uglavnom bar godinu dana, a zbog posetilaca sa starih linkova najbolje trajno. Kod promene domena alat Promena adrese računa 180 dana, ali preusmerenja i posle toga ostaju.
Šta da radim sa stranama kojih više nema?
Ako postoji bliska nova strana, preusmerite na nju. Ako ne postoji, neka adresa vraća 404 ili 410: Google oba koda tretira isto, kao znak da sadržaj ne postoji. U generatoru umesto nove adrese upišite 410; 404 ne morate da upisujete, jer adresa bez strane i bez pravila ionako vraća 404.