update 20.10.2025
This commit is contained in:
parent
8ccd81b770
commit
a67740d6ef
612 changed files with 84540 additions and 4008 deletions
212
dev/subdomain-optimization-claude-v2/IMPLEMENTATION.md
Normal file
212
dev/subdomain-optimization-claude-v2/IMPLEMENTATION.md
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
# 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue