Geliştirici dokümanları

API entegrasyonu

no404'ü sitenize bağlamak tek bir kod parçası kadar basit. Bir ziyaretçi 404'e düştüğünde API'yi çağırır, en uygun URL'yi alır ve oraya yönlendirirsiniz.

Hızlı başlangıç

Aşağıdaki kodu sitenizin 404 sayfasına ekleyin. SENIN_API_ANAHTARIN yerine panelden aldığınız API anahtarını yazın.

<!-- no404 — 404 sayfanıza ekleyin -->
<script>
(function () {
  var p = location.pathname + location.search;
  fetch("https://no404.tr/api/v1/resolve/SENIN_API_ANAHTARIN?path=" + encodeURIComponent(p))
    .then(function (r) { return r.json(); })
    .then(function (d) { if (d && d.redirect) location.replace(d.redirect); })
    .catch(function () {});
})();
</script>
API anahtarınızı ve izinli origin'lerinizi panel → site detay sayfasından yönetirsiniz.

Endpoint referansı

Tek bir endpoint; hem GET hem POST destekler.

GETPOST/api/v1/resolve/{apiKey}

Parametreler

apiKeyyol (path)Sitenizin API anahtarı (zorunlu).
pathquery / gövde404 dönen yol, örn. /eksik-sayfa (zorunlu).

GET örneği

curl "https://no404.tr/api/v1/resolve/SENIN_API_ANAHTARIN?path=/14-gram-altin-yuzuk-102" \
  -H "Origin: https://siteniz.com"

POST örneği

curl -X POST "https://no404.tr/api/v1/resolve/SENIN_API_ANAHTARIN" \
  -H "Content-Type: application/json" \
  -H "Origin: https://siteniz.com" \
  -d '{"path":"/14-gram-altin-yuzuk-102"}'

Yanıt & durum kodları

Başarılı yanıt JSON döner:

{
  "success": true,
  "found": true,
  "redirect": "https://siteniz.com/14-gram-altin-yuzuk",
  "score": 0.92,
  "source": "CATALOG"
}

Yanıt alanları

foundbooleanKesin eşleşme bulundu mu (yedek yönlendirmede false olabilir).
redirectstring | nullYönlendirilecek tam URL. Dolu ise ziyaretçiyi buraya gönderin (yedek dahil).
scorenumberEşleşme skoru 0–1 (1 = manuel yönlendirme).
sourceenumREDIRECT (manuel) · CATALOG (otomatik) · FALLBACK (eşik altı yedek adres) · NONE (yok).

Durum kodları

200Başarılı (found true/false olabilir).
403Origin izinli değil ya da izleme duraklatıldı.
404Geçersiz API anahtarı.
422Geçersiz veya eksik 'path'.
429Rate limit aşıldı (çok fazla istek).

Origin kilidi & güvenlik

API anahtarınız origin kilidi ile korunur. İstekler yalnızca panelde tanımladığınız izinli origin'lerden kabul edilir. Anahtarınız sızsa bile başka bir alan adından gelen tarayıcı isteği 403 ile reddedilir ve CORS yanıtı verilmez.

  • Sitenizi eklediğinizde alan adınız otomatik izinli origin olarak eklenir (www + köksüz).
  • Ek alan adlarını panelden ekleyebilirsiniz.
  • Anahtar sızıntısında panelden anahtarı yenileyin — eski anında geçersiz olur.
Sunucudan sunucuya (Origin başlığı olmayan) çağrılarda koruma anahtar + rate limit ile sağlanır. Tarayıcı snippet'i için origin kilidi tam korumadır.

Entegrasyon rehberleri

Next.js (App Router)

app/not-found.tsx içine:

"use client";
import { useEffect } from "react";

export default function NotFound() {
  useEffect(() => {
    const p = location.pathname + location.search;
    fetch(`https://no404.tr/api/v1/resolve/SENIN_API_ANAHTARIN?path=${encodeURIComponent(p)}`)
      .then((r) => r.json())
      .then((d) => { if (d.redirect) location.replace(d.redirect); })
      .catch(() => {});
  }, []);
  return <p>Sayfa bulunamadı, yönlendiriliyorsunuz…</p>;
}

WordPress

Temanızın 404.php dosyasına hızlı başlangıç snippet'ini ekleyin (genelde get_header() sonrası).

Sunucu tarafı (herhangi bir dil)

404 üreten yerde POST/GET çağırın, dönen redirect varsa HTTP 301/302 ile yönlendirin.

// Node.js örneği
const res = await fetch(
  "https://no404.tr/api/v1/resolve/SENIN_API_ANAHTARIN?path=" + encodeURIComponent(path),
  { headers: { Origin: "https://siteniz.com" } }
);
const data = await res.json();
if (data.redirect) {
  // örn. Express: res.redirect(301, data.redirect)
}

En iyi pratikler

  • Snippet'i erken yükleyin — 404 sayfasının başında, ziyaretçi beklemeden yönlensin.
  • Sitemap'inizi bağlayın — eşleştirme kalitesi kataloğun güncelliğine bağlıdır.
  • Eşik (threshold) ayarı — çok agresif yönlendirme istemiyorsanız eşiği yükseltin (önerilen 0.3).
  • Kritik yollar için manuel yönlendirme tanımlayın; otomatiği ezer.
  • Rate limit: anahtar+IP başına dakikada 120 istek. Normal trafikte sorun olmaz.

Hazır mısınız?

Sitenizi ekleyin, anahtarınızı alın, dakikalar içinde yayında.

Ücretsiz başla