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

5.3 KiB

Claude v2 Implementation mit Domain-Konfiguration

Durchgeführte Verbesserungen

1. Domain-Konfiguration Integration

  • config/domains.php Support: SubdomainResolver verwendet zentrale Domain-Konfiguration
  • Alle Domain-Typen unterstützt: main, main-shop, crm, portal, checkout, user-shop
  • Reserved Subdomains: Verhindert Konflikte mit System-Subdomains
  • Environment-Variables: Flexible Konfiguration über .env

2. Erweiterte SubdomainResolver Middleware

  • 6 Domain-Handler: Spezialisierte Handler für jeden Domain-Typ
  • Intelligente Domain-Parsing: Exakte Matches vor Pattern-Matching
  • Session-Domain-Auto-Config: Automatische Session-Domain basierend auf Host
  • Default-Shop aus Config: Verwendet default_user_shop aus domains.php

3. RouteServiceProvider Optimierung

  • Hotfix entfernt: Keine DomainContext-Abhängigkeit mehr
  • Alle Domain-Routen geladen: Vereinfachter, robuster Ansatz
  • Debug-Logging: Bessere Nachverfolgbarkeit

🚀 Implementation

Schritt 1: Neue Middleware kopieren

cp dev/subdomain-optimization-claude-v2/src/Http/Middleware/SubdomainResolver.php app/Http/Middleware/

Schritt 2: 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
    ],
];

Schritt 3: Cache löschen

php artisan config:clear
php artisan route:clear
php artisan view:clear

🧪 Testing aller Domain-Typen

1. Main Domain (mivita.care)

curl -H "Host: mivita.care" http://localhost/
# Erwartung: Corporate Website, keine Shop-Daten

2. Shop Domain (mivita.shop)

curl -H "Host: mivita.shop" http://localhost/
# Erwartung: Default Shop (aloevera) geladen

3. User Shop (testuser.mivita.care)

curl -H "Host: testuser.mivita.care" http://localhost/
# Erwartung: UserShop 'testuser' geladen (falls existiert)

4. CRM (my.mivita.care)

curl -H "Host: my.mivita.care" http://localhost/
# Erwartung: CRM Interface, keine Shop-Daten

5. Portal (in.mivita.care)

curl -H "Host: in.mivita.care" http://localhost/
# Erwartung: Partner Portal, keine Shop-Daten  

6. Checkout (checkout.mivita.care)

curl -H "Host: checkout.mivita.care" http://localhost/
# Erwartung: Checkout Interface, Shop-Session bleibt erhalten

7. Reserved Subdomain (www.mivita.care)

curl -H "Host: www.mivita.care" http://localhost/
# Erwartung: Redirect zu mivita.care

8. Unknown Domain

curl -H "Host: unknown.example.com" http://localhost/
# Erwartung: Redirect zu mivita.care

📋 Domain-Mapping Übersicht

Host Typ Session Domain Shop Data Routes
mivita.care main .mivita.care None main.php
mivita.shop main-shop .mivita.shop aloevera shop.php
{user}.mivita.care user-shop .mivita.care Dynamic user-shop.php
my.mivita.care crm .mivita.care None crm.php
in.mivita.care portal .mivita.care None portal.php
checkout.mivita.care checkout .mivita.care Preserved checkout.php

🔧 Weitere Konfiguration

config/domains.php anpassen:

'domains' => [
    'shop' => [
        'host' => env('APP_DOMAIN', 'mivita') . env('APP_TLD_SHOP', '.shop'),
        'type' => 'main-shop',
        'default_user_shop' => 'your-default-shop', // Anpassen!
    ],
    // ... weitere Domains
],

Environment Variables prüfen:

APP_DOMAIN=mivita
APP_TLD_CARE=.care
APP_TLD_SHOP=.shop
APP_PROTOCOL=https://
APP_PRE_URL_CRM=my.
APP_PRE_URL_PORTAL=in.
APP_URL_CHECKOUT=checkout.

Funktions-Checkliste

Nach der Implementation sollten folgende Features funktionieren:

  • User-Shop Subdomains: testuser.mivita.care lädt korrekte UserShop-Daten
  • Main Shop: mivita.shop lädt Default-Shop aus config
  • Main Care: mivita.care zeigt Corporate Website ohne Shop-Daten
  • CRM/Portal: my.mivita.care und in.mivita.care funktionieren
  • Checkout: checkout.mivita.care behält Shop-Session
  • Reserved Redirects: www.mivita.caremivita.care
  • Unknown Redirects: Fremde Domains → mivita.care
  • Session Domains: Korrekte .mivita.care / .mivita.shop Konfiguration
  • URL Generation: route() Helper funktioniert auf allen Domains
  • Warenkorb: Funktioniert auf User-Shops und Main-Shop
  • Route Parameter: Subdomain-Parameter werden korrekt entfernt

🎯 Nächste Schritte nach Implementation

  1. Hotfix-Code entfernen: Siehe HOTFIX_APPLIED.md für Anleitung
  2. Domain-spezifische Features reaktivieren: Legal-URL-Redirects, etc.
  3. Monitoring: Domain-Resolution-Logging aktivieren
  4. Performance-Optimierung: Bei Bedarf Domain-Caching hinzufügen