5.3 KiB
5.3 KiB
Implementation Guide - Claude v2 Subdomain Resolver
🚀 Schritt-für-Schritt Implementation
1. Backup der aktuellen Implementation
# 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
# 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
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
'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:
// 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
APP_DOMAIN=mivita
APP_TLD_CARE=.care
APP_TLD_SHOP=.shop
APP_PROTOCOL=https://
7. Cache löschen
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
- Keine Änderungen an Controllern erforderlich - Session-Daten bleiben gleich
- Keine Änderungen an Views erforderlich - Helfer funktionieren weiterhin
- 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:
// 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
-
Session-Daten verschwinden
- Prüfe
session.domainin config - Stelle sicher, dass Middleware nach StartSession läuft
- Prüfe
-
URLs werden falsch generiert
- Prüfe
config('app.url')zur Laufzeit - Cache leeren:
php artisan config:clear
- Prüfe
-
Shop wird nicht gefunden
- Prüfe UserShop.slug in Datenbank
- Validiere Domain-Parsing mit Debug-Output
🧪 Testing nach Implementation
1. User-Shop testen
curl -H "Host: testuser.mivita.care" http://localhost
2. Main-Shop testen
curl -H "Host: mivita.shop" http://localhost
3. Main-Care testen
curl -H "Host: mivita.care" http://localhost
4. Unknown Domain testen
curl -H "Host: unknown.example.com" http://localhost
# Sollte zu mivita.care redirecten
🔧 Rollback-Plan
Falls Probleme auftreten:
# 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