BikeGremlin pretraga...

Promena permalinkova – Optimizacija sajta [07]

U ovom članku baviću se WordPress permalinkovima, kao i njihovom (naknadnom) promenom i rešavanjem/prevencijom problema koje to može uzrokovati. Gugl nije pružio zadovoljavajuće odgovore na ova pitanja (barem ne za mene), tako da sam morao eksperimentisati sam, na probnom sajtu, zatim na jednom “živom” sajtu, pa na drugom – da bih na kraju svoje iskustvo i znanje podelio ovde za slučaj da još nekome pomogne.

Sadržaj:
0. Uvod – početne napomene
1. Šta su to WordPress permalinkovi
2. Ime i ID broj članka
…2.1. Ime članka (“post name”)
…2.2. ID članka (“post ID”)
3. Najbolja struktura permalinkova
4. WordPress automatske redirekcije
5. Brzina
6. Rangiranje stranica, broj poseta i zaključak
7. Izvori

0. Uvod – početne napomene

Ukratko: po mom mišljenju & iskustvu, najbolja struktura WordPress permalinkova je: “domen/ID-članka/ime-članka/”.
Prilikom promene strukture permalinkova, WordPress će automatski obaviti sve potrebne redirekcije. Ipak, poželjno je izmenjati sve interne linkove, kako oni ne bi išli svaki put preko redirekcija.
Naravno (i na žalost), ima još stvari koje treba uzeti u obzir i one su objašnjene u članku.

Napomena: nisam nikakav stručnjak za WordPress – nemam pojma šta je “ispod haube”. Sva testiranja sam radio metodom “crne kutije“. U tom smislu, sve dopune ili/i ispravke su više nego dobrodošle, sa molbom da se pruži i objašnjenje kako test izvesti i potvrditi rezultate. Takođe, sve savete i tvrdnje u ovom tekstu koristite na svoju odgovornost. Menjanje strukture linkova sajta nosi sa sobom rizike po funkcionalnost, SEO i rangiranje na pretraživačima. Svakako uradite bekap pre bilo kakvih izmena. Ukratko: meni ovo radi bez ikakvih problema i nisam još našao ni jedan razlog zašto ne bi radilo (u teoriji, ili praksi).


1. Šta su to WordPress permalinkovi

Permalinkovi su “fiksni” linkovi svih članaka. Tj. ako “ručno” ne promenite link objavljenog članka, on će ostati isti.

Struktura permalinkova je unapred određen (izabran) način na koji se permalinkovi “prave” prilikom objave članaka.

Oba ova pojma su povezana, a biće malo jasniji kada se pogleda slika 1 i objašnjenje koje sledi.

WordPress menu for choosing permalink structure Picture 1
WordPress meni za izbor strukture permalinkova
Slika 1

Na slici 1 vidi se koje sve opcija nudi WordPress, uz “Custom Structure” (poslednja) opciju za pravljenje strukture po želji. Ovaj članak ima “slug”, ili “ime članka”: “promena-permalinkova“.

Struktura permalinkova koju sam izabrao je “Custom Structure”, sa post_id/postname “šablonom”, tako da ovaj članak u Vašem browseru izgleda ovako: “io.bikegremlin.com/7468/promena-permalinkova/”.

Do pre par meseci, izabrana struktura permalinkova ovog sajta je bila “Day and name”, pa bi link ovog članka bio npr: “io.bikegremlin.com/2018/12/07/promena-permalinkova/”.


2. Ime i ID broj članka

Pre objašnjenja optimalne strukture permalinkova i redirekcija, važno je objasniti dva pojma: ime članka (“post name”) i ID broj članka (“post ID”).

2.1. Ime članka (“post name”)

Prilikom kreiranja novog članka, WordPress će sam napraviti ime članka na osnovu naslova. To je moguće izmeniti, po želji, naravno.

“Manually” changing post name Picture 2
“Ručna” promena imena članka
Slika 2

Ovde ima jedna važna “caka”: WordPress ne dozvoljava pravljenje više članaka sa istim imenom članka. Tako da ako objavite članak “pozdrav-oblacima”, pa kasnije objavite još jedan sa istim imenom, WordPress će automatski dodati broj, pa će ime članka biti “pozdrav-oblacima-2”, sa svim narednim člancima istog imena numerisanim “-3”, “-4” i tako redom.

Dakle, ime članka je jedinstveno. Tj. na jednom WordPress sajtu ne postoje dva članka sa potpuno identičnim imenom. Ovo je važno imati na umu kako bi se razumelo preusmeravanje, o čemu će kasnije biti reči.

WordPress može sam vršiti pretragu po imenu članka. Ako napišete u browseru adresu: “io.bikegremlin.com/promena-permalinkova”, dobićete ovaj članak, tj. preusmeriće Vas sam WordPress na adresu: “io.bikegremlin.com/7468/promena-permalinkova/”. To nije sve, ali opširnije u 4. poglavlju.

2.2. ID članka (“post ID”)

Svaki članak dobija automatski svoj jedinstveni ID broj (u rasponu od jedne do N cifara). Za razliku od imena članka, ovo nije namenjeno za promenu od strane korisnika – potpuno je automatizovano i “fiksno”. Moja pretpostavka (na osnovu znanja o bazama podataka) je da ovo predstavlja jedinstveni ključ i indeks WordPressove baze.

Slično kao i kod imena članka, WordPress može vršiti pretragu i po ID broju. Dakle: “io.bikegremlin.com/7468” Vas isto vodi do ovog članka, iako je struktura (perma)linkova sajta drugačija. Ipak, da bi ovo bilo “omogućeno”, potrebno je da u izabranoj strukturi permalinkova stoji i post ID na prvom mestu (websajt/post-ID/štagod).


3. Najbolja struktura permalinkova

Bikegremlin.com imao je strukturu permalinkova: godina/mesec/dan/ime-članka. Iz neobjašnjivog razloga, kada sam “postavljao” sajt, mislio sam da je to dobra ideja (“jaao, imaću lepo po datumima sve kada sam pisao…” da. 🙂  ).

Vremenom mi je došlo do pameti da je to prilično loše rešenje. Zašto? Razlozi, poređani po redosledu značaja:

  • Korištenje ID-a članka na početku permalink strukture, umesto datuma, ili nečeg drugog, dovodi do najbrže moguće pretrage baze, pa samim tim i do nešto “bržeg sajta”.
  • Umetanjem datuma dobija se duži link, a bolje je kad je link kraći.
  • Datum kada je članak napisan svakako stoji u članku, a za temu kojom se bavim (nisu vesti dnevne štampe), puno je manje bitan od datuma poslednjeg ažuriranja članka.

Kakva struktura linkova je najbolja onda? Izneću “najčešća” mišljenja koja sam pročitao, kao i svoj zaključak & mišljenje, pa zaključite sami za sebe šta je za Vas najbolje.

  • Mnogi zastupaju mišljenje da je sa aspekta SEO, najbolja struktura: imesajta/ime-članka. Ovo je tačno u smislu da su važne ključne reči (ime članka) bliže početku URL adrese, pa “nose” veću “težinu” za pretraživače.
  • Slično mišljenje je da se može uključiti i kategorija članka, ako nazivi kategorija nose SEO težinu. Mana ovoga je veća dužina linkova.
  • Uz ovo, neki tvrde da ubacivanje kategorije članka pre imena članka pomaže pretraživačima da “shvate” strukturu sajta. Ovo je po mom mišljenju & iskustvu netačno ako se naprave mape sajta za pretraživače, a ne vidim ni jedan razlog (niti opravdanje) da se to ne uradi. Tako da jedini validan argument za kategorije u linkovima vidim u smislu važnih ključnih reči, ovo zavisi od sajta do sajta, ali za veliku većinu je kategorija u linku čist višak.

Moj zaključak je da prva opcija ima smisla, uz dve mane:

  • Manja brzina, tj. veće opterećenje baze/servera pretragom po imenu članka – barem kod WordPress-a.
  • Nemogućnost lakog pravljenja skraćenih linkova.

Zato sam se odlučio za:
io.bikegremlin.com/ID-članka/ime-članka/

Ovo omogućava najbržu pretragu baze (i performanse sajta), a i lako mogu praviti kratke linkove, kao za ovaj članak što bi bio: “io.bikegremlin.com/7468/”. Veoma zgodno za postavljanje linkova na Tviteru i Instagramu na primer.

Kako sam “bezbolno” promenio strukturu sa stare na novu, objasniću u narednom poglavlju.


Mane:

U slučaju prelaska na neki drugi CMS (koji nije WordPress), potrebno je praviti redirekciju za svaki link, jer je sumanuto i nepraktično ubacivati (veštački, na silu) ID-članka unutar svakog linka na novoj platformi. Ovo je najveća mana na duži rok.


4. WordPress automatske redirekcije

Ovo je, barem meni, najzanimljiviji deo – kako se WordPress snalazi sa redirekcijama (preusmerenjima), pogotovo u slučaju promene strukture permalinkova. Prvo kraći uvod.

Na puno mesta sam čitao savete i uputstva kako podesiti redirekcije izmenama .htaccess fajla na serveru, ili korištenjem različitih plaginova.

Da sam hteo samo izbaciti datume iz linkova, pravljenje šablona ne bi bilo nikakav problem. Samo bih stavio da se svi linkovi koji imaju datum skrate za isti (prosto i grubo rečeno). Ali, ja sam hteo da ubacim i jedinstveni ID-članka. Pošto ne postoji šablonsko pravilo za ID-članka, morao bih pisati posebno pravilo za redirekciju za svaki objavljeni članak (preko 100).

Tako sam počeo eksperimentisati sa redirekcijama koje sam WordPress automatski radi. Sad se setite poglavlja 2.1. i 2.2. o imenu i ID-u članka. Tj. da WordPress sam može pretraživati po njima. Gledao sam ovo malo detaljnije. U Google Chrome browseru pritiskom na F12 taster i izborom Network opcije, vidi se šta se dešava sa mrežom. “Igrao” sam se sa ovim i došao do podataka o trajnim (301) redirekcijama koje WordPress radi, upravo onako kako je bilo potrebno.

WordPress redirect – Network part shows the 301 redirect, while the header shows the address where the redirect was made to – just where it was needed. Picture 3
WordPress redirekcija – vidi se 301 redirekcija u Network delu, dok se u zaglavlju vidi stranica na koju je preusmereno – tačno gde treba.
Slika 3

Dakle, WordPress pregleda ceo link i ako tu postoji ime članka, preusmerava na taj članak. Dovoljno je čak i deo imena da postoji, dok god je to počeatak imena (prvo slovo je dovoljno), preusmeriće na prvi članak (po abecednom redu slaganja imena članka) koji počinje unesenim slovima. U mom slučaju, pošto su stari linkovi sadržali datum i puno ime članka, redirekcija je mogla biti urađena direktno na odgovarajući članak sa novom strukturom permalinkova – kako se vidi sa slike 3. Uneto je samo: “bike.bikegremlin.com/winter”.

Izuzeci?

Ako se izabere struktura permalinkova sa ID-om članka na odgovarajućoj poziciji, u mom slučaju odmah iza imena sajta (bikegremlin.com/ID-članka/ime-članka/), tada WordPress preusmerava na članak sa datim ID brojem, ako takav ID broj postoji. Ako dati ID broj ne postoji – WordPress traži dalje, po imenu članka, kako je objašnjeno u odmah iznad.

WordPress redirects to a post with the given post ID, even though the given post name is a non-existing one Picture 4
WordPress redirekcija na članak sa datim ID brojem, uprkos unetom nepostojećem imenu članka
Slika 4

Još jedna lepa stvar kod strukture permalinkova koju sam izabrao je što omogućava pravljenje skraćenih linkova pisanjem samo ID-a članka iza imena domena. Na primer: “bike.bikegremlin.com/6740”. S tim što tada ime članka ne bude ubačeno u URL. Slika 5.

“Abusing” a shortened URL Picture 5
“Zloupotreba” skraćene URL adrese 🙂
Slika 5

Zanimljivost: ako se unese “puna” adresa domena sa ID-om članka i kosom crtom na kraju, stranica se otvara “direktno”, bez ikakve redirekcije. Na primer:
“https://bike.bikegremlin.com/6740/”

Napomena: nakon dobrog pitanja postavljenog na wordpress.stackexchange.com, mislim da treba pojasniti: WordPress SEO plagini (poput Yoast, i The SEO Framework) dodaju “canonical” URL tag svakom članku, na osnovu trenutne strukture permalinkova. Tako da nema bojazni od eventualnih “Google penala” zbog “dupliranog sadržaja”.

Anchor linkovi takođe ne predstavljaju problem za automatsku redirekciju. Probajte kliknuti na ovaj link:
https://bicikl.bikegremlin.com/2016/06/08/kompatibilnost-zadnjih-siftera-bicikla/#Friction

Videćete da se trajno rediriguje na:
https://bicikl.bikegremlin.com/1528/kompatibilnost-zadnjih-siftera-bicikla/#Friction


5. Brzina

Izbor ID-a članka kao prvog u strukturi permalinkova skaćuje vreme pretrage, manje opterećuje server, tako da je za ovaj sajt (trenutno na relativno slabom host-serveru) vreme odziva servera po prvi put palo ispod jedne sekunde – sa proseka od 1,2 sekunde (posle svih prethodnih optimizacija).

Prosečno vreme redirekcije je skočilo drastično – sa ispod 0,2 sekunde do preko 1 sekunde. Zašto? Zato što svi “stari” linkovi koji vode ka sajtu sada bivaju redirigovani, i to od strane WordPressa, ne servera, što traži dosta vremena, nekad i preko 2 sekunde. Redirekcije su trajne (301), tj. browser posetioca pamti redirekciju za ubuduće, ali svi novi posetioci sa starih linkova prolaze kroz redirekciju – prvi put.

Vremenom je prosečno vreme redirekcije opadalo, ali još uvek nije došlo do “starog” vremena – tj. još uvek ima novih korisnika koji na sajt dolaze preko starih linkova (forumi, šerovanja po društvenim mrežama itd.).

Zbog ovoga nije preporučivo menjati strukturu permalinkova bez dobrog razloga, pogotovo na sajtovima koji su bili aktivni duže vreme. U mom slučaju, zaključio sam da je promena potrebna i da je bolje uraditi je kasno, nego nikad – prihvatajući sve posledice koje to nosi sa sobom.

Editovao sam sve interne linkove (na sajtu), kako barem oni ne bi morali biti redirigovani, čak ni prvi put. Ovo sam radio ručno – svakako je trebalo “preći” sve stare članke, ažurirati ih, proveriti linkove itd, tako da sam spojio ružno, a neophodno i korisno da tako kažem.

Ažuriranje: uradio sam set testova korištenjem novog metoda merenja brzine sajta (objašnjenog na datom linku).

  • Test sajt 1 (TS1) koristio je strukturu permalinkova “www.test.com/post-id/post-name”.
  • Test sajt 2 (TS2) koristio je “www.test.com/post-name”.

Uradio sam tri serije testova preko GTmetrix alata za merenje brzine učitavanja stranice.

  • Prva serija (PG 1) testirala je brzinu otvaranja jednog članka.
  • Druga serija (PG 2) testirala je učitavanje prikaza kategorije, koja sadrži oko 20 čalanka.
  • Treća serija (PG 3) merila je vreme učitavanje jednog članka, ali sa isključenim keširanjem (i na serveru i na Cloudflare).
Brzine učitavanja stranica sa post id (TS1) i post name (TS2) strukturom permalinkova
Brzine učitavanja stranica sa post id (TS1) i post name (TS2) strukturom permalinkova
Picture 6


Dobijene razlike su u nivou statističke greške metoda merenja, osim prvog testa gde je sajt sa post-id strukturom (TS1) nešto značajnije brži.

Članci se svakako brzo učitavaju na dobro optimizovanom sajtu, stavljenom na dobar server. Zato sam pokrenuo test opterećenja, simulirajući više posetilaca koji pregledaju sajt, da vidim hoće li biti nekih merljivih razlika. Za to sam koristio alat OctoPerf.

  • Prva dva testa po 50 posetilaca koji pregledaju sajt, stranicu po stranicu.
  • Treći simulira 10 posetilaca, ali sa isključenim keširanjem sajta. Test sa 50 posetilaca bez keširanja, rezultovao je prevelikim brojem grešaka, pa vreme učitavanja stranice nije moglo da se izmeri (s tim da je broj grešaka bio za oko 10% manji na sajtu koji koristi post-ID strukturu permalinkova).
Testovi opterećenja sajtova koji koriste post-ID (TS1) i post-name (TS2) strukturu permalinkova
Testovi opterećenja sajtova koji koriste post-ID (TS1) i post-name (TS2) strukturu permalinkova
Slika 7


Razlike su ponovo prilično male (u rangu statističke greške kada se uključi keširanje). Detaljni rezultati testova opterećenja u .pdf formatu:


6. Rangiranje stranica, broj poseta i zaključak

Ovde nisam video nikakve probleme, niti “padove”, a mislim da je nova struktura permalinkova bolja za u buduće, zato sam i promenio staru. Nemam šta drugo dodati.

Zaključak:

Birajte strukturu permalinkova pažljivo. Za WordPress, uzimajući u obzir SEO i performanse, uz sve prednosti i mane, mislim da je najbolja struktura:
ime-domena/ID-članka/ime članka/

Ako procenite da je potrebno promeniti postojeću strukturu permalinkova, uradite to što pre. Kao što sam objasnio, ima mana, traži malo angažmana, ali radi  savršeno. Ukoliko se izabere “brža” struktura permalinkova, po preporuci iz prethodnog pasusa, na duži rok bi performanse trebalo da budu bolje.

Na većini drugih mesta na Internetu preporučuje se drugačija struktura permalinkova, ili/i se tvrdi da automatske redirekcije WordPress-a ne rade. Još nisam našao test koji to potvrđuje. Dok svi moji testovi i iskustvo potvrđuju da su stvari napisane u ovom članku tačne.

Ažuriranje: sa ponovljenim testovima, rađenim na bržem serveru, razlike u performansama su zanemarivo male. Postoje druge stvari koje imaju veći uticaj na brzinu od strukture permalinkova (kao što je broj i izbor plaginova, keširanje itd.). Ipak, ako broj poseta poraste toliko da server postane opterećen, korištenje “www.test.com/post-id/post-name” strukture permalinkova je ipak nešto brže i od korištenja samo “www.test.com/post-name”.


7. Izvori

Mnogi od ovih izvora tvrde suprotno od onoga što sam ovde naveo. Ipak, sve ovde napisano sam isprobao na dva “živa” sajta i radi! Drugim rečima: verovatno jesam lud, ali to ne znači da nisam u pravu.  🙂


Molim Vas da koristite BikeGremlin.net forum za sva pitanja i komentare.

Ako ste primetili neku grešku u članku, ili informacije koje nedostaju - molim Vas da mi na to skrenete pažnju komentarom na BikeGremlin forumu.
Na forumu možete pisati anonimno (stavite bilo koje ime/nadimak pri registraciji), ali mislim da je dobro da sve dopune i ispravke članaka budu javno dokumentovane (čak i ako njihov autor izabere da ostane anoniman).

Skip to content