| .. | ||
| src | ||
| BOOTSTRAP_SOLUTION.md | ||
| COMPARISON.md | ||
| DOMAINS_CONFIG.md | ||
| HOTFIX.md | ||
| HOTFIX_APPLIED.md | ||
| IMPLEMENTATION.md | ||
| IMPLEMENTATION_v2_DOMAINS.md | ||
| PERFORMANCE_OPTIMIZATION.md | ||
| README.md | ||
| SHARED_ROUTES_FIX.md | ||
| SHARED_ROUTES_FIXED.md | ||
| TESTING.md | ||
Subdomain Optimization - Claude v2 (Lightweight Solution)
🎯 Ziel
Eine einfache, funktionierende, leichtgewichtige Lösung für das Domain- und Subdomain-Handling basierend auf dem ursprünglich funktionierenden Subdomain.php Middleware-Ansatz.
❌ Probleme der bisherigen Implementierungen
1. Aktuelle Version (DomainServiceProvider + DomainResolver)
- Problem: Zu frühe Initialisierung im Service Provider
- Problem: Mehrere Sessions werden gestartet
- Problem: Komplexe Architektur mit DomainContext-Klassen
- Problem: Session-Timing-Issues
2. GPT-5-v3 Version
- Problem: Zu umfangreich und komplex
- Problem: Zu starkes Session-Handling
- Problem: Input/Error werden dauerhaft gespeichert
- Problem: Session-basierter Warenkorb wird ständig neu initialisiert
- Problem: Checkout funktioniert nicht mehr
3. Ursprüngliche Subdomain.php
- ✅ Funktionierte, aber war rudimentär
- ✅ Einfacher Ansatz
- ❌ Fehlende Fehlerbehandlung
- ❌ Keine Dokumentation
✅ Claude v2 Lösung - Vorteile
Einfachheit
- Nur 1 Middleware-Datei (ca. 200 LOC)
- Keine zusätzlichen Service-Klassen erforderlich
- Keine DomainContext-Objekte
- Kein frühes Service-Provider-Bootstrapping
Funktionalität
- ✅ Unterstützt User-Subdomains (
user.mivita.care) - ✅ Unterstützt Main-Shop (
mivita.shop) - ✅ Unterstützt Main-Care (
mivita.care) - ✅ Korrekte Session-Domain-Konfiguration
- ✅ Proper URL-Generation für alle Fälle
- ✅ Shop-Validierung (aktiv, bezahlt)
Robustheit
- ✅ Asset/API-Request-Filtering
- ✅ Graceful Redirects für unbekannte Domains
- ✅ Fehlerbehandlung mit HTTP 503 für inaktive Shops
- ✅ Route-Parameter-Cleanup
🏗️ Architektur
EarlyDomainParser + Middleware Approach
EarlyDomainParser (App\Domain\)
├── Bootstrap-safe domain parsing
├── Request-level caching
├── Config/domains.php integration
└── Fallback to environment variables
SubdomainResolver Middleware
├── Uses EarlyDomainParser for domain info
├── User Shop Handling
├── Main Shop Handling
├── Main Care Handling
├── CRM/Portal/Checkout Handling
└── Context Setup (Session + Config)
RouteServiceProvider
├── Uses EarlyDomainParser during bootstrap
├── Domain-aware route loading
└── Conditional route loading by domain type
Execution Flow
- Request kommt rein → Middleware wird ausgeführt
- Domain wird geparst → Typ wird bestimmt
- Je nach Typ:
- User-Shop: UserShop laden, Session setzen
- Main-Shop: Default-Shop laden
- Main-Care: Session clearen
- Session-Domain konfigurieren
- App-URL setzen
- Request weiterleiten
📁 Dateien
dev/subdomain-optimization-claude-v2/
├── README.md # Diese Dokumentation
├── IMPLEMENTATION.md # Implementierungs-Anleitung
├── TESTING.md # Test-Szenarien
├── src/Services/EarlyDomainParser.php # Bootstrap-safe Domain Parser
├── src/Http/Middleware/
│ └── SubdomainResolver.php # Optimized Middleware
└── src/Providers/
└── RouteServiceProvider.php # Updated Route Provider
Note: EarlyDomainParser wurde nach app/Domain/EarlyDomainParser.php verschoben (Namespace: App\Domain\EarlyDomainParser).
🔧 Domain-Konfiguration
Unterstützte Domain-Typen (basierend auf config/domains.php):
-
User-Shop:
{username}.mivita.care- Lädt UserShop basierend auf Subdomain
- Session-Domain:
.mivita.care - Post-Route:
user/
-
Main-Shop:
mivita.shop- Lädt Default-Shop aus config (
default_user_shop) - Session-Domain:
.mivita.shop - Post-Route:
user/
- Lädt Default-Shop aus config (
-
Main-Care:
mivita.care- Keine Shop-Daten
- Session-Domain:
.mivita.care - Session-Cleanup
-
CRM:
my.mivita.care- Session-Domain:
.mivita.care - Session-Cleanup
- Session-Domain:
-
Portal:
in.mivita.care- Session-Domain:
.mivita.care - Session-Cleanup
- Session-Domain:
-
Checkout:
checkout.mivita.care- Session-Domain:
.mivita.care - Behält Shop-Session-Daten für Checkout
- Session-Domain:
-
Unknown: Alle anderen
- Redirect zu Main-URL aus config
⚡ Performance
- Request-Level Caching: EarlyDomainParser cached Parsing-Ergebnisse pro Request
- Bootstrap-Safe: Funktioniert vor Service-Container-Initialisierung
- Single Database Query: Nur bei User-Shops
- Minimal Memory Footprint: Statische Klassen mit Smart Caching
- Config Integration: Nutzt Laravel Config mit Fallback zu Env-Variablen
🚀 Vorteile gegenüber anderen Versionen
| Aspekt | Subdomain.php | DomainServiceProvider | GPT-5-v3 | Claude v2 |
|---|---|---|---|---|
| Komplexität | Niedrig | Hoch | Sehr Hoch | Niedrig |
| Session-Issues | Keine | Viele | Viele | Keine |
| Warenkorb | ✅ | ❌ | ❌ | ✅ |
| Wartbarkeit | Niedrig | Mittel | Niedrig | Hoch |
| Performance | Gut | Schlecht | Mittel | Gut |
| Dokumentation | Keine | Wenig | Viel | Vollständig |
🛠️ Implementation
Siehe IMPLEMENTATION.md für detaillierte Schritt-für-Schritt Anleitung.
🧪 Testing
Siehe TESTING.md für umfassende Test-Szenarien.
📋 Key Features
- ✅ Einfach zu verstehen und zu warten
- ✅ Funktioniert ohne Session-Probleme
- ✅ Erhält Warenkorb-Funktionalität
- ✅ Korrekte URL-Generation
- ✅ Robuste Fehlerbehandlung
- ✅ Keine Breaking Changes für bestehenden Code