From 575b8f80ca577372dc4876e66799f23b262b84e8 Mon Sep 17 00:00:00 2001 From: Hikmet Date: Mon, 10 Aug 2026 16:48:25 +0300 Subject: [PATCH] feat: redirect legacy domain to adseeq.com --- src/proxy.ts | 22 ++++++++++++++++++++++ tests/core.test.ts | 20 ++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/proxy.ts diff --git a/src/proxy.ts b/src/proxy.ts new file mode 100644 index 0000000..44eb7c9 --- /dev/null +++ b/src/proxy.ts @@ -0,0 +1,22 @@ +import { NextResponse } from "next/server"; +import type { NextRequest } from "next/server"; + +const LEGACY_HOSTS = new Set(["kazananavci.seymata.com", "www.kazananavci.seymata.com"]); + +export function proxy(request: NextRequest) { + const forwardedHost = request.headers.get("x-forwarded-host")?.split(",")[0]?.trim(); + const host = (forwardedHost || request.headers.get("host") || "").split(":")[0].toLowerCase(); + + if (!LEGACY_HOSTS.has(host) && host !== "www.adseeq.com") { + return NextResponse.next(); + } + + const destination = new URL("https://adseeq.com"); + destination.pathname = request.nextUrl.pathname; + destination.search = request.nextUrl.search; + return NextResponse.redirect(destination, 301); +} + +export const config = { + matcher: ["/((?!_next/static|_next/image).*)"] +}; diff --git a/tests/core.test.ts b/tests/core.test.ts index cb338cb..ae82174 100644 --- a/tests/core.test.ts +++ b/tests/core.test.ts @@ -6,6 +6,8 @@ import { getFeatureLimit } from "../src/lib/plans"; import { istemciIp, hizSiniriAsimi } from "../src/lib/rate-limit"; import { stripePriceFor } from "../src/lib/stripe"; import { tikTokActorInput } from "../src/lib/apify-tiktok"; +import { NextRequest } from "next/server"; +import { proxy } from "../src/proxy"; test("Apify reklamı metin, medya ve ülke alanlarıyla normalize edilir", () => { const ad = normalizeApifyAd({ @@ -56,3 +58,21 @@ test("TikTok aktör girdisi resmi şemadaki alanları kullanır", () => { keyword: "phone case", region: "US", maxItems: 10, addonProductDetails: false }); }); + +test("eski alan adı yol ve sorguyu koruyarak AdSeeQ'a yönlenir", () => { + const request = new NextRequest("http://localhost/dashboard/ads?q=berber", { + headers: { "x-forwarded-host": "kazananavci.seymata.com" } + }); + const response = proxy(request); + assert.equal(response.status, 301); + assert.equal(response.headers.get("location"), "https://adseeq.com/dashboard/ads?q=berber"); +}); + +test("AdSeeQ ana alan adı yönlendirilmez", () => { + const request = new NextRequest("https://adseeq.com/dashboard/ads", { + headers: { host: "adseeq.com" } + }); + const response = proxy(request); + assert.equal(response.status, 200); + assert.equal(response.headers.get("location"), null); +});