web: www-Hosts leiten kanonisch per 301 auf die Apex-Domain

Ploi kann nur Pfad-Redirects, daher als App-Middleware (früh im globalen
Stack): GET/HEAD auf www.<domain> → 301 auf die Apex-Domain mit Pfad und
Query. Unsichere Methoden werden nicht umgeleitet (301 verwirft den Body)
— die beantwortet die App dank Host-Normalisierung weiterhin selbst.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-20 15:47:13 +00:00
parent e69ded4fed
commit fcf83040db
3 changed files with 75 additions and 0 deletions

View file

@ -0,0 +1,37 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Leitet www-Hosts kanonisch auf die Apex-Domain um (301, Pfad + Query
* bleiben erhalten): Jede Seite soll genau eine indexierbare URL haben,
* und Sessions/Cookies laufen nicht auf zwei Host-Varianten auseinander.
*
* Nur sichere Methoden (GET/HEAD/OPTIONS) werden umgeleitet — ein 301
* würde bei POST & Co. den Request-Body verwerfen; solche Requests
* beantwortet die App dank Host-Normalisierung (DomainAssetContext)
* auch auf www-Hosts korrekt.
*/
class RedirectWwwToApex
{
/**
* @param Closure(Request): Response $next
*/
public function handle(Request $request, Closure $next): Response
{
$host = strtolower($request->getHost());
if (! str_starts_with($host, 'www.') || ! $request->isMethodSafe()) {
return $next($request);
}
return redirect()->away(
$request->getScheme().'://'.substr($host, 4).$request->getRequestUri(),
301
);
}
}