Asosiy kontentga o‘tish
Innovialabs

Redirekt zanjirlari va sikllari: qanday topish va tuzatish

Amaliyot3 daq

Qisqacha

Redirekt zanjiri — yakuniy sahifagacha bo‘lgan bir nechta o‘tish, sikl esa unga umuman yetib bormaydi; ikkalasi ham bir xil tuzatiladi: har bir eski URL va ichki havola yakuniy manzilga bitta 301 yoki 308 bilan olib borishi kerak.

Qisqacha javob

Redirekt zanjiri — URL boshqa URL ga yo‘naltirib, u ham yakuniy sahifaga yetguncha yana yo‘naltirganda yuzaga keladi: A → B → C. Redirekt sikli — o‘tishlar tugamaganda: A → B → A.

Yechim bitta: har qanday eski manzil yakuniy URL ga bitta o‘tishda olib borishi kerak, ichki havolalar, canonical va sitemap esa yakuniy URL ga to‘g‘ridan-to‘g‘ri, umuman redirektsiz ishora qilishi kerak.

Zanjir va sikllar nimasi bilan zararli

  • Skanerlash byudjeti sarflanadi. Har bir o‘tish — alohida so‘rov. Katta saytlarda robot yangi sahifalar o‘rniga redirektlarga vaqt sarflaydi.
  • Signallar susayadi. Har bir ortiqcha qadam — yana bitta nosozlik nuqtasi: noto‘g‘ri kod, yo‘qolgan parametr, o‘rtadagi vaqtinchalik redirekt.
  • Skanerlash cheklovlari. Qidiruv tizimlari faqat cheklangan miqdordagi o‘tishlarni bosib o‘tadi. Zanjir juda uzun bo‘lsa, robot sahifaga yetib bormaydi va yo‘naltirish xatosini qayd etadi.
  • Sekin yuklanish. Foydalanuvchi ham har bir o‘tishni kutadi, bu ayniqsa mobil tarmoqlarda seziladi.
  • Sikl sahifani butunlay buzadi. Brauzer xato ko‘rsatadi, qidiruv tizimi esa URL ni indekslay olmaydi.

Ular qayerdan paydo bo‘ladi

  • Protokol va hostni turli bosqichlarda normallashtirish: http://example.com → https://example.com → https://www.example.com.
  • URL oxiridagi slesh uchun boshqa qoidalar ustiga qo‘shilgan qoidalar.
  • Saytning bir necha marta ko‘chishi, har safar eski redirektlarga yangilari qo‘shilgan.
  • Server, CDN va ilova qoidalari o‘rtasidagi ziddiyat. Klassik sikl: proksi ortidagi ilova HTTP ni ko‘rib HTTPS ga yo‘naltiradi, holbuki proksi allaqachon HTTPS beradi.

Ularni qanday topish mumkin

Krauler yordamida

Kraulerni (Screaming Frog, Sitebulb yoki o‘xshashi) bosh sahifadan va alohida eski URL lar ro‘yxati bo‘yicha ishga tushiring. Quyidagilarni qidiring:

  • bittadan ortiq o‘tishga ega URL lar;
  • redirektlarga olib boradigan ichki havolalar;
  • 4xx yoki 5xx bilan tugaydigan redirektlar;
  • xato sifatida belgilangan sikllar.

Search Console da

Sahifalar (sahifalarni indekslash) hisobotida Yo‘naltirilgan sahifa (Page with redirect) holatini oching. Bu URL lar yo‘naltirgani uchun indekslanmaydi. Eski manzillar uchun bu normal holat, lekin ro‘yxat Google hali qaysi redirektlarni bilishini ko‘rsatadi. Agar bu manzillar sitemap yoki ichki havolalaringizda bo‘lsa — ularni yangilang. Alohida Yo‘naltirish xatosi (Redirect error) holati juda uzun zanjirlar, sikllar va buzilgan redirekt manzillariga ishora qiladi.

Qo‘lda

Muayyan URL uchun barcha o‘tishlarni ko‘rish:

curl -sIL http://example.com/old-page | grep -iE "^(HTTP|location)"

Har bir HTTP qatori — bitta javob. Yakuniy 200 gacha bittadan ortiq redirekt bo‘lsa — bu zanjir.

Qanday tuzatish kerak

  1. Jadval tuzing: eski URL → yakuniy URL.
  2. Har bir qoidani to‘g‘ridan-to‘g‘ri yakuniy manzilga olib boradigan qilib qayta yozing.
  3. Normallashtirishni (protokol, host, slesh) bitta qoidaga birlashtiring.
  4. Ichki havolalar, canonical, hreflang va sitemap ni yakuniy URL larga yangilang.
  5. Saytni krauler bilan qayta tekshiring.

Nginx

HTTP va www siz hostni darhol yakuniy manzilga:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    # bu yerda ssl_certificate va ssl_certificate_key
    return 301 https://www.example.com$request_uri;
}

Apache (.htaccess)

HTTPS va www uchun ikkita alohida qadam o‘rniga bitta qoida:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,R=301]

Next.js

next.config.js da eski manzillarni darhol yakuniy manzilga yo‘naltiring. Agar /old bir paytlar /new ga, keyin esa /newest ga ko‘chgan bo‘lsa, ikkala qoida ham /newest ga olib borishi kerak:

module.exports = {
  async redirects() {
    return [
      { source: "/old", destination: "/newest", permanent: true },
      { source: "/new", destination: "/newest", permanent: true },
    ];
  },
};

permanent: true bilan Next.js 308 qaytaradi — qidiruv tizimlari uni doimiy redirekt deb hisoblaydi. Shuningdek, trailingSlash sozlamasi destination dagi manzillarga mos kelishini tekshiring, aks holda Next.js ortiqcha o‘tish qo‘shadi.

Ko‘p beriladigan savollar

O‘z-o‘zidan yo‘q. U URL yo‘naltirishini va indeksga yakuniy sahifa tushishini bildiradi. Agar u yerga muhim sahifalar kutilmaganda tushib qolsa yoki sitemap va ichki havolalar hali ham bu manzillarga olib borsa, chora ko‘rish kerak.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.