mivita/dev/subdomain-optimization-claude-v2/IMPLEMENTATION.md
2025-10-20 17:42:08 +02:00

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

  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:

// 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

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