v2.5.2
Giriş yap

domain nasıl kısa link oluştururum

Anonim
320 defa görüntülendi ve 1 kişi tarafından değerlendirildi

arkadaşlar biraz saçma bir soru olacaktır fakat ben mesela trendyol yada Hepsiburada gibi nasıl kısaltırım https://ty.gl/blablabla ben bu linke tıkladığım zaman trendyol.coma gidiyor

Cevap yaz
Cevaplar (1)
ebykdrms
903 gün önce

Bunu başka siteler üzerinden değil de doğrudan kendi siteniz üzerinden yapmak istiyorsanız şöyle bir yol kullanabilirsiniz:
1) Veritabanında bir tablo açın ve tüm kısa linkleri ve bunların normal hallerini burada tutun.
2) Kısa linkleri kendinizce bir algoritmaya göre oluşturun. Çözülebilecek herhangi bir hash algoritması kullanabilir veya basit bir şifreleme oluşturabilirsiniz. Burada güvenlik problemimiz yok zaten. Belli bir url bilgisini şifreleyen ve şifrelenmiş url bilgisini çözebilen fonksiyonlar yazın.
3) Sayfala gelen tüm istekleri tek bir sayfa karşılayacak şekilde yönlendirin. (PHP için .htaccess ayarlamaları yaparak tüm istekleri index.php'ye yönlendirin.)
4) Sayfaya gelen tüm GET parametrelerini belli bir değişkene bağlayın. (PHP için, .htaccess'te tüm parametreleri url adında bir anahtara bağlayın.)
5) Sayfaya gelen bu parametreyi okuyun ve bir kontrolden geçirerek kısa kod algoritmanıza uyup uymadığını kontrol edin.
6) Değerin şifresini çözün ve gerçek url'yi elde edin.
7) Sayfayı gerçek url'ye yönlendirin. (PHP için header() fonksiyonu ile yönlendirme yapın.)

Tabii ki burada yönlendirme işi sizin domain'inize bağlı. Yani sizin domaininiz "prototurk.com" ise kısa linkiniz de mesela "proturk.com/sl1345" gibi bi'şey olacak. Domain'i bizzat kısaltmanız mümkün değil diye biliyorum. Bunun yerine kısa linkleri yönetmek için ayrı bir domain satın alabilirsiniz. mesela "pt.xyz" gibi bir domain'iniz olursa, bu domain'den gelen istekleri belli bir sayfaya yönlendirirsiniz ve o sayfa da sizi doğru link'e yönlendirir. "pt.zyz/sh1234" gibi bir link kullanabilir hale gelirsiniz.

Tüm bunları kendiniz yapmak istemiyorsanız bu hizmeti sunan sitelerden faydalanabilirsiniz. Google'a "kısa link oluşturma" diye yazdığınızda karşınıza birkaç tane çıkacaktır. Muhtemelen onlar da bu mantığı kullanıyorlardır. Bu hizmetin ücretli, ücretsiz ama süre kısıtlamalı versiyonları var sanırım.

Biraz da pratik bir örnek vermek gerekirse:

Diyelim ki "prototurk.com" domaini sizin. Paylaşımlı bir hosting üzerinde PHP ile çalışıyorsunuz. Veritabanını falan araya sokmadan şöyle bir örnek yapalım:

1) Kök klasörünüzde shortlinks.php adında bir dosya oluşturun ve içine şu diziyi ekleyin:

$shortLinks = ["sl1" => "akis", "sl2" => "kesfet", "sl3" => "makaleler"];

Böylece hangi kısa link'in hangi sayfaya gideceğini belirledik.

2) Kök klasörünüzde .htaccess dosyası oluşturun ve içine şunları yazın:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Böylece domain'e gelen tüm istekleri index.php dosyasına yönlendirdik ve parametre değerlerini url key'ine topladık.

3) Kök klasörünüzde index.php dosyası oluşturun ve içine şunları yazın:

<?php
// Artık tüm istekler bu sayfada karşılanacak ve gerekli sayfalar buraya include edilecek.
// Diğer sayfalarda url hiyerarşisi sorunu yaşamamak için url'leri hep kök dizinden başlatacağız.
// Bu nedenle sabit değişkenler oluşturuyoruz.
define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
define('ROOT_URL', (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']);

// Eğer bir php sayfasına url üzerinden doğrudan erişilmek istenirse istenmeyen açıklar doğabilir.
// Çağırılan sayfanın doğrudan mı çağırıldığı yoksa index.php'ye include edilerek mi çağırıldığını kontrol edebilmek için her sayfada kontrol edeceğimiz bir sabit değişken oluşturuyoruz.
define('PAGE_ACCESS',true);

// "prototurk.com/soru/5982-domain-nasil-kisa-link-olustururum" gibi bir istek geldiyse
// $_GET['url'] = 'soru/5982-domain-nasil-kisa-link-olustururum' olur. 
// Biz bu değeri alıp "/" karakterlerinden parçalayıp ona göre hangi sayfanın istendiğini bulacağız ve bu sayfaya include ile çağıracağız.
$urlLink = isset($_GET['url']) ? $_GET['url'] : "homepage";
$urlLink = trim($urlLink, '/\t\r\0\x08');
$urlLink = explode('/', $urlLink); // $urlLink = ['soru','5982-domain-nasil-kisa-link-olustururum'] şeklinde bir dizi elde etmiş olduk.

// Sayfamızın adını tutacak değişkenimizi oluşturalım. Varsayılan olarak şimdilik ilk parametreyi atayalım.
$pageName = $urlLink[0];

// İlk parametreye bakalım ve bizim kısa linklerimizden biri olup olmadığını kontrol edelim.
// Eğer bu sayfalardan biriyse gerçek sayfa adını alalım ve işlemi burada durdurarak gerçek link'e yönlendirme yapalım.
include('shortlinks.php');
if(isset($shortLinks[$pageName])) { 
    $pageName = ROOT_URL."/".$shortLinks[$pageName]; 
    header("Location:$pageName");
    exit("Yönlendiriliyor...");
}

// Bu satıra kadar gelindiyse linkteki değer bizim kısa linklerimizden biri değilmiş demektir.
// Buradan sonra $urlLinks dizisindeki değerlere göre hangi sayfanın istendiği tespit edilip o sayfa include edilecek.

$pageName = $urlLinks[0];
// Mesela hiç parametre gelmediyse, yani direkt "prototurk.com" olarak istek atıldıysa biz $pageName'e şu an varsayılan olarak "homepage" değerini atadık.
// Başka bi'şey de gelmiş olabilirdi. Mesela "prototurk.com/makaleler" gelmiş olsaydı $pageName'e "makaleler" değerini atamış olacaktık.

// Elde ettiğimiz ada sahip php uzantılı bir dosya var mı diye kontrol edelim.
// Eğer kök klasörümüzde php uzantılı böyle bir dosya yoksa sayfa adımız 404 olsun.
if(!file_exist("$pageName.php")) $pageName = "404";

// Bu satıra kadar geldiysek dosyamıza da var demektir.
// Mesela "prototurk.com" veya "prototurk.com/homepage" şeklinde gelen istekler için "homepage.php" dosyamız var.
// Mesela "prototurk.com/makaleler" şeklinde gelen istekler için "makaleler.php" dosyamız var.
// Mesela "prototurk.com/asdkfjşasldfj" şeklinde gelen istekler için "404.php" dosyamız var. (Var mı diye kontrol etmedik ama olmalı.)
// Artık sayfayı include edebiliriz:
include("$pageName.php");

Daha sonra homepage.php, makaleler.php, 404.php gibi sayfalarımızı kök dizine oluşturabiliriz. Bu sayfaların her birinin başında PAGE_ACCESS sabitinin oluşturulup oluşturulmadığını da kontol etmeliyiz.
Mesela 404.php sayfası şöyle olabilir:

<?php if(!defined('PAGE_ACCESS')) exit("Bu sayfaya doğrudan erişim yetkiniz yok."); ?>
<html>
    <head>
        <title>Sayfa Bulunamadı</title>
        <style>
            * { margin:0; padding:0; box-sizing:border-box; }
            html,body { height:100%; }
            body { display:flex; align-items:center; justify-content:center; }
            h1 { display:flex; text-align:center; line-height:1; color:#333; }
        </style>
    </head>
    <body>
        <h1>404 - SAYFA BULUNAMADI!</h1>
    </body>
</html>

Elbette bu yolu kullanarak sadece kısa linklerin değil, aslında MVC altyapılı bir sistemin de temelini atmış oluyorsunuz. Ayrıca SEO dostu url meselesine de el atmış oluyorsunuz.
Kodları test etmeden yazdığım için sorunlar, hatalı yazımlar, mantık hataları vs. olabilir. Ama temelde anlatmak istediğimi anlatabildiğimi umuyorum.