# Shortened URL - Domain Configuration Guide

## Status Saat Ini

✅ **Short URL Generation**: Bekerja dengan baik - domain yang dipilih disimpan di database  
⚠️ **Short URL Access**: Hanya bekerja di domain utama aplikasi

**Contoh:**
- ❌ `https://x.playvid.lol/e/mupxpalV` → 404 (domain belum di-setup di server)
- ✅ `https://playvid.lol/e/mupxpalV` → Works (domain utama)

---

## Solusi Saat Ini (Implementasi)

Aplikasi sudah dikonfigurasi dengan **fallback logic**:

1. **`reliable_short_url`** - Selalu bekerja
   - Menggunakan domain utama aplikasi
   - Dijamin accessible dari mana saja
   - Ini adalah URL yang ditampilkan di admin panel

2. **Domain Preference** - Tersimpan untuk tracking
   - Ketika membuat shortened URL, pilih domain untuk analytics/tracking
   - Domain dipilih tersimpan di database
   - Bisa dilihat di list shortened URLs

---

## Setup Domain Tambahan (Optional - Untuk URL Dari Domain Lain)

Jika ingin `https://x.playvid.lol/e/mupxpalV` bekerja langsung, ikuti langkah:

### Via cPanel:

1. **Addon Domain**
   - Log in ke cPanel
   - Cari "Addon Domains" atau "Domains"
   - Tambahkan `x.playvid.lol`
   - Pastikan document root = `/home/rasamemek/public_html/player2027/public`

2. **SSL Certificate** (Important)
   - Pastikan domain memiliki SSL certificate
   - Bisa auto-generate via cPanel Auto SSL

3. **Verify DNS**
   - Pastikan DNS record untuk `x.playvid.lol` mengarah ke IP server
   - A record: x.playvid.lol → 167.172.90.235 (atau IP server Anda)

### Via Nginx Config (Jika VPS/Dedicated):

```nginx
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name x.playvid.lol;
    
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    
    root /home/rasamemek/public_html/player2027/public;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
```

### Via Apache Config (.htaccess):

Pastikan `/home/rasamemek/public_html/player2027/public/.htaccess` sudah ada dengan isi standar Laravel (biasanya sudah ada).

---

## Testing

### Test Short URL dari Domain Utama:

```bash
# Contoh dari playvid.lol
curl -I https://playvid.lol/e/mupxpalV

# Harus return 302 Redirect (atau 301) ke long URL, bukan 404
```

### Test Shortened URL Model:

```bash
cd /home/rasamemek/public_html/player2027

# Launch tinker
php artisan tinker

# Test reliable URL (selalu bekerja)
>>> $url = App\Models\ShortenedUrl::find(5);
>>> $url->reliable_short_url;
// Output: "https://playvid.lol/e/mupxpalV"

# Test full URL (dengan domain pilihan)
>>> $url->full_short_url;
// Output: "https://x.playvid.lol/e/mupxpalV"

# Check domain:
>>> $url->domain->domain_name;
// Output: "x.playvid.lol"
```

---

## Recommended Approach

**OPTION A** (Default saat ini):
- Gunakan `reliable_short_url` untuk semua short codes
- Lebih simple, tidak perlu setup domain di server
- Domain preference tetap tersimpan untuk tracking/future use

**OPTION B** (Jika ingin full domain support):
- Setup semua domain di server (cPanel addon domains)
- Buat code logic yang detect domain dan gunakan `full_short_url`
- Lebih fleksibel, tapi memerlukan setup server untuk setiap domain

---

## Database Schema

Short URLs tersimpan dengan struktur:

```
Table: shortened_urls
- id: ID shortened URL
- short_code: Random 8-char code (atau custom alias)
- alias: Custom short path (optional)
- long_url: Target URL
- domain_id: Foreign key ke domains table
- click_count: Jumlah klik
- expires_at: Tanggal kadaluarsa (optional)
```

Domain info tersimpan di:

```
Table: domains
- id: Domain ID
- domain_name: Nama domain (e.g., "x.playvid.lol")
- is_active: Aktif atau tidak
```

---

## Troubleshooting

### "404 Not Found" saat akses shortened URL:

**Kemungkinan 1**: Domain belum di-setup di server
- **Solusi**: Setup domain via cPanel atau edit nginx config

**Kemungkinan 2**: Short code tidak ada di database
- **Solusi**: Cek database `SELECT * FROM shortened_urls WHERE short_code = 'mupxpalV'`

**Kemungkinan 3**: Route tidak ter-register
- **Solusi**: Jalankan `php artisan route:list` dan cek apakah route `/e/{code}` ada

### Masalah DNS:

```bash
# Test DNS resolution
nslookup x.playvid.lol
# Harus return IP server

# Test koneksi
ping x.playvid.lol
```

---

## Summary

✅ **Short URL generation sudah 100% bekerja** - Tested dan verified  
⚠️ **Multi-domain support** - Perlu setup server (cPanel/nginx)  
✅ **Fallback mechanism** - Selalu ada URL yang bekerja dari domain utama  

Untuk saat ini, gunakan `reliable_short_url` yang dijamin bekerja. Setup domain tambahan di server jika ingin short codes accessible dari domain lain.
