# Implementation Guide - Claude v2 Subdomain Resolver ## 🚀 Schritt-für-Schritt Implementation ### 1. Backup der aktuellen Implementation ```bash # Aktuelle Dateien sichern cp app/Http/Middleware/DomainResolver.php app/Http/Middleware/DomainResolver.php.bak cp app/Providers/DomainServiceProvider.php app/Providers/DomainServiceProvider.php.bak ``` ### 2. Neue Middleware kopieren ```bash # Claude v2 Middleware kopieren cp dev/subdomain-optimization-claude-v2/src/Http/Middleware/SubdomainResolver.php app/Http/Middleware/ ``` ### 3. Middleware in Kernel registrieren **File: `app/Http/Kernel.php`** ```php protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // WICHTIG: Nach StartSession, vor VerifyCsrfToken \App\Http\Middleware\SubdomainResolver::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, // ... rest of middleware ], ]; ``` ### 4. Service Provider deaktivieren **File: `config/app.php`** ```php 'providers' => [ // ... andere providers // AUSKOMMENTIEREN: // App\Providers\DomainServiceProvider::class, // ... rest of providers ]; ``` ### 5. Route-Konfiguration prüfen **File: `routes/web.php`** (oder entsprechende Route-Dateien) Stelle sicher, dass Subdomain-Routen korrekt definiert sind: ```php // Subdomain-Routen für User-Shops Route::domain('{subdomain}.' . config('app.domain') . config('app.tld_care')) ->middleware('web') ->group(function () { // User shop routes Route::get('/{site?}/{subsite?}/{product_slug?}', 'Web\SiteController@index') ->where('site', '[A-Za-z0-9\-]+') ->where('subsite', '[A-Za-z0-9\-]+') ->where('product_slug', '[A-Za-z0-9\-]+'); }); ``` ### 6. Config-Validierung Stelle sicher, dass die folgenden Config-Werte gesetzt sind: **File: `.env`** ```env APP_DOMAIN=mivita APP_TLD_CARE=.care APP_TLD_SHOP=.shop APP_PROTOCOL=https:// ``` ### 7. Cache löschen ```bash php artisan config:clear php artisan route:clear php artisan view:clear php artisan cache:clear ``` ## 🔄 Migration von bestehenden Implementationen ### Von DomainServiceProvider zu Claude v2 1. **Keine Änderungen an Controllern** erforderlich - Session-Daten bleiben gleich 2. **Keine Änderungen an Views** erforderlich - Helfer funktionieren weiterhin 3. **Keine Änderungen an Routes** erforderlich - Parameter-Handling ist kompatibel ### Kompatibilität mit bestehendem Code Claude v2 ist **100% rückwärtskompatibel** mit: - `session('user_shop')` - `session('user_shop_domain')` - `config('app.url')` - `Util::setPostRoute()` ## ⚙️ Konfiguration ### Session-Domain-Konfiguration Die Middleware setzt automatisch die richtige Session-Domain: - **User-Shops**: `.mivita.care` (für subdomain.mivita.care) - **Main-Shop**: `.mivita.shop` (für mivita.shop) - **Main-Care**: `.mivita.care` (für mivita.care) ### URL-Generation Die Middleware setzt automatisch `config('app.url')`: - **User-Shops**: `https://subdomain.mivita.care` - **Main-Shop**: `https://mivita.shop` - **Main-Care**: `https://mivita.care` ## 🐛 Debugging ### Debug-Logging aktivieren (optional) Füge temporäres Logging hinzu: ```php // In SubdomainResolver::handle() am Ende hinzufügen: \Log::debug('SubdomainResolver', [ 'host' => $request->getHost(), 'domain_info' => $domainInfo, 'session_domain' => config('session.domain'), 'app_url' => config('app.url'), 'user_shop_id' => session('user_shop')?->id, ]); ``` ### Häufige Probleme 1. **Session-Daten verschwinden** - Prüfe `session.domain` in config - Stelle sicher, dass Middleware **nach** StartSession läuft 2. **URLs werden falsch generiert** - Prüfe `config('app.url')` zur Laufzeit - Cache leeren: `php artisan config:clear` 3. **Shop wird nicht gefunden** - Prüfe UserShop.slug in Datenbank - Validiere Domain-Parsing mit Debug-Output ## 🧪 Testing nach Implementation ### 1. User-Shop testen ```bash curl -H "Host: testuser.mivita.care" http://localhost ``` ### 2. Main-Shop testen ```bash curl -H "Host: mivita.shop" http://localhost ``` ### 3. Main-Care testen ```bash curl -H "Host: mivita.care" http://localhost ``` ### 4. Unknown Domain testen ```bash curl -H "Host: unknown.example.com" http://localhost # Sollte zu mivita.care redirecten ``` ## 🔧 Rollback-Plan Falls Probleme auftreten: ```bash # Neue Middleware entfernen rm app/Http/Middleware/SubdomainResolver.php # Backup wiederherstellen cp app/Http/Middleware/DomainResolver.php.bak app/Http/Middleware/DomainResolver.php cp app/Providers/DomainServiceProvider.php.bak app/Providers/DomainServiceProvider.php # Service Provider wieder aktivieren in config/app.php # DomainServiceProvider::class wieder einkommentieren # Cache löschen php artisan config:clear php artisan route:clear ``` ## ✅ Erfolgsindikatoren Nach erfolgreicher Implementation sollten folgende Funktionen arbeiten: - ✅ User-Subdomains laden korrekte Shops - ✅ Warenkorb funktioniert auf allen Domains - ✅ Session-Daten bleiben erhalten - ✅ URL-Generation funktioniert korrekt - ✅ Checkout-Prozess funktioniert - ✅ Unbekannte Domains werden korrekt umgeleitet