Preskoči na sadržaj
Novi sajtoviobjava bez gubitka Pošaljite upit

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

Kod preusmerenja

Oba su trajna i Google ih tretira isto; 301 je najšire podržan.

Parametri upita (?utm_source=…)

Zadrži: /stara?utm_source=x vodi na /nova?utm_source=x. Odbaci: vodi na /nova, bez parametara.

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.

Server

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

  1. 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.
  2. 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šite 410. Redovi koji počinju sa # se preskaču.
  3. 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 .html ili .pdf.
  • Ne razlikuj velika i mala slova: nginx map ih ionako ne razlikuje, a za Apache se dodaje zastavica NC.
  • 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/               410

izlaz 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:

  • map blokovi idu u http {}, a redovi sa if u server {} blok, pre location blokova.
  • 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 /x sa kodom 410 i /x?id=1 sa preusmerenjem rade zajedno.
  • map poredi 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, pa systemctl reload nginx. Na većini servera ključ u mapi sme da ima najviše 46 bajtova; za dužu adresu nginx -t javlja grešku o map_hash. Generator tada upozorava i u komentar na vrhu upisuje vrednosti za map_hash_bucket_size i map_hash_max_size koje treba dodati u http {}. 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 .htaccess u korenu sajta, iznad bloka # BEGIN WordPress ako postoji, i pre opštih pravila za https i www. Inače WordPress ili opšte pravilo obradi adresu pre njih.
  • U .htaccess putanja stiže bez početne kose crte, pa obrazac ^/o-nama tu nikad ne pogađa. Zato generator piše ^o-nama\.html$.
  • [R] bez broja je privremeno preusmerenje (302), zato uvek stoji [R=301].
  • RewriteRule ne vidi parametre upita. Za staru adresu sa upitom generator dodaje RewriteCond %{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 zastavicu NE. Bez toga bi mod_rewrite %2 pročitao kao povratnu referencu, a ostatak kodirao još jednom.
  • NC znači da se velika i mala slova ne razlikuju, a G vrać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 .htaccess tog podfoldera; proverite i RewriteBase.

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.

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.