web: E9 und E10 entschieden — Zuordnung aktiv, eine Adresse je statischer Seite, Hub-Portalseiten leiten weiter
E9: Kategorie-Zuordnung wie vorgeschlagen übernommen, Zuordnung ist standardmäßig an (CANONICAL_ASSIGNMENT_ENABLED). Auf der Dev-Kopie verifiziert: Kopie trägt rel=canonical auf die Erstquelle und fällt aus der Sitemap ihres Portals. E10: faq, hilfe, gute-pressemitteilung, die vier Transparenzseiten und die API-Doku lagen auf allen drei Hosts mit identischem Text und je eigenem Self-Canonical. Jetzt führt presseecho die Informationsseiten, der Hub die API-Doku; Sitemap und llms.txt nennen nur die führende Adresse. Rechtstexte (Impressum, Datenschutz, AGB, Richtlinien, Meldeweg, Kündigung) bleiben bewusst je Host — jede Domain ist ein eigenes Angebot mit eigener Anbieterkennzeichnung. Bei der Erreichbarkeitsprüfung des Hubs gefunden und behoben: /de/preise, /de/veroeffentlichen, /de/newsrooms und /de/suche wurden unter pressekonto.com mit dem Branding von businessportal24 ausgeliefert (der Portal-Kontext fällt dort darauf zurück) — jetzt 301 auf presseecho, die Transparenz-Navigation verlinkt direkt dorthin. /de/kontakt und /de/ueber-uns sprangen über /de auf die Startseite, jetzt in einem Schritt. Der Self-Canonical kommt jetzt aus dem aufgerufenen Host; Portal-Inhalte, die über den Hub laufen, behalten ihr Portal (webPortalContextApplied). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ee267c622e
commit
4c17a17254
18 changed files with 434 additions and 17 deletions
|
|
@ -24,7 +24,7 @@
|
|||
@if ($routeName === $current)
|
||||
<span class="inline-flex items-center px-3 py-1.5 text-[12.5px] font-semibold border border-brand bg-brand text-white" aria-current="page">{{ $label }}</span>
|
||||
@else
|
||||
<a href="{{ route($routeName) }}" class="inline-flex items-center px-3 py-1.5 text-[12.5px] font-semibold border border-bg-rule-strong bg-white text-ink hover:bg-bg-elev transition-colors">{{ $label }} →</a>
|
||||
<a href="{{ \App\Support\StaticPageCanonical::publicUrlFor($routeName) }}" class="inline-flex items-center px-3 py-1.5 text-[12.5px] font-semibold border border-bg-rule-strong bg-white text-ink hover:bg-bg-elev transition-colors">{{ $label }} →</a>
|
||||
@endif
|
||||
</li>
|
||||
@endforeach
|
||||
|
|
|
|||
|
|
@ -14,8 +14,13 @@
|
|||
$pageDescription = html_entity_decode(trim($__env->yieldContent('meta_description')), ENT_QUOTES, 'UTF-8') ?: $siteName;
|
||||
// Self-Canonical als Default aus der Portal-URL + Request-Pfad (ohne Query):
|
||||
// pro Portal/Domain getrennt und unabhängig von URL::forceRootUrl – verhindert Cross-Portal-Duplicate.
|
||||
$portalBase = rtrim($domainUrl ?? config('app.url'), '/');
|
||||
$canonicalUrl = trim($__env->yieldContent('canonical')) ?: ($portalBase.request()->getPathInfo());
|
||||
$portalBase = \App\Support\StaticPageCanonical::selfBase($domainUrl ?? null, ($webPortalContextApplied ?? false) === true);
|
||||
// Statische Seiten liegen auf Hub UND beiden Portalen mit identischem
|
||||
// Text (Anhang 2, E10): dort führt ein Host, die anderen verweisen
|
||||
// dorthin. Rechtstexte sind ausgenommen — siehe config/canonical.php.
|
||||
$canonicalUrl = trim($__env->yieldContent('canonical'))
|
||||
?: (\App\Support\StaticPageCanonical::urlFor(request()->route()?->getName(), request()->getPathInfo())
|
||||
?: $portalBase.request()->getPathInfo());
|
||||
$ogType = trim($__env->yieldContent('og_type')) ?: 'website';
|
||||
$ogImage = trim($__env->yieldContent('og_image'));
|
||||
@endphp
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue