Prosty skracacz linków na własnej domenie
Co to jest skracacz linku
Wyobraź sobie, że chcesz wysłać znajomemu link do konkretnego produktu na Allegro lub lokalizacji w Google Maps. Zamiast zgrabnego adresu, dostajesz "tasiemca", który wygląda tak: https://www.google.com/maps/place/Warszawa/xxxxxxx Skracacz zamienia go w coś takiego: twojadomena.pl/warszawa. Możesz oczywisćie skorzystać z darmowego serwisu typu url shortener jak bitly, natomiast biedahosting jest dla ludzi, którzy lubią działać samodzielnie. Poza tym:- Skracacz na własnej domenie to fajna sprawa
- Możesz edytować linki docelowe
- Możesz skrócić coś dla znajomych i być królem internetów :)
Krok 0: Zamów hosting Bieda15
Hosting kosztuje 15 PLN na rok i powinien wystarczyć do tego zastosowania.
Krok 1: Kup domenę
Możesz dzialać na darmowej subdomenie od biedahostingu, ale na własnej wygląda to zdecydowanie lepiej. Możesz poszukać domen w lokalnych, np. waw.pl - dzięki temu będziesz miał większy wybór ciekawych adresów. Możesz poszukać promocji u różnych dostawców - ale pamiętaj, że nawet takie super oferty są droższe przy przedłużeniu za rok.
Krok 2: Podłącz domenę do hostingu
W panelu domeny zmień ustawienia DNS na ns1.microhost.pl i ns2.microhost.pl i dodaj domenę w panelu swojego hostingu przez Zarządzenie kontami-> Zarządzanie domenami -> dodaj nową. Rozpropagowanie zmian w DNS moze zająć dłuższy czas, dlatego wynik może być widoczny nawet następnego dnia.
Krok 3: Podłącz darmowy certyfikat SSL
W panelu hostingu, który otrzymałeś po zakupie przejdż do Zarządzanie kontami -> certyfikaty SSL. Wybierz "Uzyskaj automatyczny certyfikat od dostawcy ACME". Wypełnij pola i wybierz zapisz.
Krok 4: Kod skracacza
Mój kod skacacza wygenerowała sztuczna inteligencja. Możesz oczywisci napisać sam lub poprosić AI o jeszcze lepszy kod. Pamiętaj, że korzystasz z tego kodu na własne ryzyko.
Krok 5: Panel administratora
Dobra dobra, moze nie panel administratora, ale miejsce gdzie będziesz skracał linki. W moim założeniu katalog jest zabezpieczony hasłem, żeby nikt nieuprawniony nie mógł korzystać ze skracacza. Użyłem podstawowej metody logowania przez plik .htaccess - mozesz użyc czegoś bardziej zaawansowanego. Ale do rzeczy:
- Przejdź do managera plików i do katalogu twojadomena->public_html. Załóż tam folder admin i załóż w nim plik .htaccess
AuthType Basic AuthName "Private link shortener" AuthUserFile sciezka_do/.plik_hasel Require valid-user # Ograniczenie dostępu do wybranych IP Order deny,allow Deny from all Allow from TWOJ_IP
Do zabezpieczenia dostępu do folderu potrzebujesz plik z zaszyfrowanym hasłem, umieść go poza folderem public_html. Online znajdziesz wiele generatorów haseł wpisz "htpasswd online". Możesz też dodać ograniczenie dostępu tylko dla wybranych adresów IP - sprawdź swój adres wyszukująć strony "my ip". - W folderze admin utwórz plik index.php, kóry zapewni interfejs do generownaia skróconych linków. Kod mozesz rozwijać - dodać usuwanie linków, statystyki, wyszykiwarke itd.
Kod zapisuje skrócone linki do bazy danych sqlite - czyli do pliku links.db, więc może fajnie umieścić go poza public_html? A może zamiast SQLite użyjesz mysql? Bieda rozwiązania zawsze stanowią wstęp do dalszych poszukiwań.
Treść pliku:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->exec(" CREATE TABLE IF NOT EXISTS links ( id INTEGER PRIMARY KEY AUTOINCREMENT, code TEXT UNIQUE, url TEXT, clicks INTEGER DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )"); function generateCode($length = 4) { return substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, $length); } $shortUrl = null; // OBSŁUGA ZAPISU (NOWY LUB EDYCJA) if (!empty($_POST['url'])) { $url = trim($_POST['url']); if (!empty($_POST['edit_code'])) { // EDYCJA ISTNIEJĄCEGO LINKU $code = $_POST['edit_code']; $stmt = $db->prepare("UPDATE links SET url = ? WHERE code = ?"); $stmt->execute([$url, $code]); } else { // GENEROWANIE NOWEGO $code = generateCode(); $stmt = $db->prepare("INSERT INTO links (code, url) VALUES (?, ?)"); $stmt->execute([$code, $url]); } $shortUrl = $_SERVER['HTTP_HOST'] . '/' . $code; } // POBIERANIE LINKÓW DO LISTY $allLinks = $db->query("SELECT * FROM links ORDER BY created_at DESC")->fetchAll(PDO::FETCH_ASSOC); // POMOCNICZA ZMIENNA DLA FORMULARZA EDYCJI $editUrl = ''; $editCode = ''; if (isset($_GET['edit'])) { $stmt = $db->prepare("SELECT * FROM links WHERE code = ?"); $stmt->execute([$_GET['edit']]); $toEdit = $stmt->fetch(); if ($toEdit) { $editUrl = $toEdit['url']; $editCode = $toEdit['code']; } } ?> Bieda skracacz linków v2 = $editCode ? "Edytuj link: $editCode" : "Skróć link" ?>
Gotowe!
Twoje linki:
/= $link['code'] ?>
= htmlspecialchars($link['url']) ?>🖱️ = $link['clicks'] ?> | Edytuj
Utwórz kod realizujący przekierowania
Wyjdź poziom wyżej z folderu admin, utwrórz tam plk .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)$ redirect.php?code=$1 [L,QSA]
Obok pliku .htaccess utwórz redirect.php o treści:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $code = $_GET['code'] ?? ''; $stmt = $db->prepare("SELECT * FROM links WHERE code = ?"); $stmt->execute([$code]); $link = $stmt->fetch(PDO::FETCH_ASSOC); if (!$link) { http_response_code(404); echo "Link nie istnieje"; exit; } $db->prepare("UPDATE links SET clicks = clicks + 1 WHERE code = ?") ->execute([$code]); header("Location: " . $link['url'], true, 301); exit;
Dlaczego to działa na tanim hostingu?
Do takiego zadania nie potrzebujesz VPS-a ani chmury. Wystarczy: php i pliki .htaccess Właśnie do takich małych rzeczy powstał BiedaHosting — prosty, tani i bez umów.