EmDash bietet Funktionen zur Suchmaschinenoptimierung (SEO) für Inhaltseinträge, Seiten-Heads, Sitemaps, robots.txt und Weiterleitungen. Die meisten davon funktionieren, sobald für eine Sammlung SEO aktiviert ist und die Website <EmDashHead> in ihren Seiten-Heads rendert.
| Funktion | Ausgabe | Voraussetzung |
|---|---|---|
| SEO-Bereich | Titel, Beschreibung, Bild, kanonische URL und No-Index pro Eintrag | SEO ist für die Sammlung aktiviert |
| Head-Metadaten | Tags für Beschreibung, Robots, Canonical, Open Graph und Twitter Card | <EmDashHead> im Seiten-Head |
| Strukturierte Daten | JSON-LD BlogPosting oder WebSite | <EmDashHead> im Seiten-Head |
| Sitemaps | /sitemap.xml und /sitemap-{collection}.xml | SEO ist für die Sammlung aktiviert |
robots.txt | /robots.txt mit einem Sitemap-Verweis | Nichts |
| Websiteweite Einstellungen | Verifizierungs-Tags, Standard-Social-Bild, Titeltrennzeichen | Werte unter Settings > SEO |
| Übersetzungen | hreflang-Links im Head und in der Sitemap | Astro i18n ist konfiguriert |
| Weiterleitungen und 404-Protokoll | Weiterleitungs- und Gone-Regeln, ein Protokoll nicht gefundener URLs | Nichts |
SEO für eine Sammlung aktivieren
Aktivieren Sie SEO für eine Sammlung unter Content Types im EmDash-Admin. Fügen Sie in einer Seed-Datei "seo" zum Array supports der Sammlung hinzu:
{
"version": "1",
"collections": [
{
"slug": "posts",
"label": "Posts",
"urlPattern": "/posts/{slug}",
"supports": ["drafts", "revisions", "seo"],
"fields": [{ "slug": "title", "label": "Title", "type": "string", "required": true }]
}
]
}
Mit aktiviertem SEO zeigt der Editor eines gespeicherten Eintrags einen Bereich SEO, und die Sammlung erscheint in der Sitemap. Sammlungen, bei denen Routable ausgeschaltet ist, bleiben aus der Sitemap heraus.
SEO-Felder pro Eintrag bearbeiten
Der Bereich SEO im Eintragseditor enthält diese Felder:
- OG Image ist das Social-Vorschaubild (
og:image) und das Bild, das für den Eintrag in der Sitemap aufgeführt wird. - SEO Title ersetzt den Eintragstitel in Social-Vorschauen und strukturierten Daten sowie in
<title>, wenn die Seite den Titel ausgetSeoMeta()rendert. - Meta Description ist die Zusammenfassung, die in den Suchergebnissen unter dem Titel angezeigt wird. Der Bereich zählt die Zeichen im Vergleich zu einer Richtlinie von 160 Zeichen.
- Canonical URL verweist Suchmaschinen auf die Originalversion einer Seite, die von einer anderen URL dupliziert wird.
- Hide from search engines fügt der Seite
noindex, nofollowhinzu und entfernt den Eintrag aus der Sitemap und aus denhreflang-Alternativen.
Leere Felder greifen auf die Werte zurück, die die Seite an createPublicPageContext() übergibt. getSeoMeta() greift auf die Felder title und excerpt des Eintrags zurück.
SEO-Metadaten auf einer Inhaltsseite ausgeben
<EmDashHead> rendert die SEO-Metadaten für einen Seitenkontext. Übergeben Sie auf einer Inhaltsseite die Sammlung und die Datenbank-ID des Eintrags als content, damit <EmDashHead> die Werte aus dem SEO-Bereich des Eintrags anwendet.
Das folgende Beispiel rendert den Head einer Beitragsseite. getSeoMeta() ermittelt <title> und die kanonische URL, und <EmDashHead> rendert die übrigen Tags:
---
import { decodeSlug, getEmDashEntry, getSeoMeta, getSiteSettings } from "emdash";
import { createPublicPageContext } from "emdash/page";
import { EmDashHead } from "emdash/ui";
const slug = decodeSlug(Astro.params.slug);
if (!slug) return Astro.rewrite("/404");
const { entry: post } = await getEmDashEntry("posts", slug);
if (!post) return Astro.rewrite("/404");
const settings = await getSiteSettings();
const seo = getSeoMeta(post, {
siteTitle: settings.title,
siteUrl: settings.url || Astro.url.origin,
titleSeparator: settings.seo?.titleSeparator,
path: Astro.url.pathname,
});
const page = createPublicPageContext({
Astro,
kind: "content",
title: seo.title,
pageTitle: seo.ogTitle,
description: seo.description,
canonical: seo.canonical,
siteName: settings.title,
content: { collection: "posts", id: post.data.id, slug: post.data.slug },
});
---
<html lang="en">
<head>
<meta charset="utf-8" />
<title>{seo.title}</title>
<EmDashHead page={page} />
</head>
<body>
<h1>{post.data.title}</h1>
</body>
</html>
<EmDashHead> rendert diese Tags:
- Die Meta-Beschreibung.
- Eine Robots-Direktive, wenn der Eintrag vor Suchmaschinen verborgen ist.
- Einen Canonical-Link und
og:url, wenn der Seitenkontext oder der Eintrag eine kanonische URL festlegt. - Open-Graph-Tags (
og:type,og:title,og:description,og:image,og:site_name) und Twitter-Card-Tags. Hat eine Seite kein Bild, verwendetog:imagedas Standard-Social-Bild aus den Website-Einstellungen. article:published_time,article:modified_timeundarticle:author, wenn der SeitenkontextarticleMetaenthält.
<EmDashHead> rendert das Element <title> nicht. Rendern Sie es wie im Beispiel in der Seite oder im Layout.
Verwenden Sie für Seiten, die keine Inhaltseinträge sind, kind: "custom". Website-Einstellungen zeigt ein Layout, das aus den Website-Einstellungen einen benutzerdefinierten Seitenkontext aufbaut.
Plugins können Head-Tags über den page:metadata-Hook hinzufügen oder ersetzen. Bei demselben Tag hat der Wert eines Plugins Vorrang vor den Website-Einstellungen, die wiederum Vorrang vor den aus dem Seitenkontext erzeugten Werten haben.
Strukturierte Daten
<EmDashHead> fügt einer Seite ein JSON-LD-Skript hinzu, wenn der Seitenkontext die benötigten Daten enthält:
- Eine Artikelseite mit kanonischer URL erhält einen
BlogPosting-Graphen mit Überschrift, Beschreibung, Bild, Veröffentlichungs- und Änderungsdatum, Autor und Herausgeber, die der Seitenkontext liefert.kind: "content"setztpageTypeauf"article", sofern der Seitenkontext keinen anderen Typ festlegt. - Eine Seite eines anderen Typs erhält einen
WebSite-Graphen mit Website-Name und URL, wenn der SeitenkontextsiteNameenthält.
Das JSON-LD verwendet denselben Titel, dieselbe Beschreibung und dasselbe Bild wie die Open-Graph-Tags, einschließlich der Werte aus dem SEO-Bereich des Editors. Plugins können es über den Hook page:metadata ersetzen.
Sitemaps
EmDash liefert unter /sitemap.xml einen Sitemap-Index aus. Er verlinkt für jede Sammlung mit mindestens einem aufgeführten Eintrag eine untergeordnete Sitemap unter /sitemap-{collection}.xml.
Eine Sammlungs-Sitemap listet Einträge auf, die veröffentlicht und nicht gelöscht sind, einen Slug haben und nicht vor Suchmaschinen verborgen sind. Sie baut jede URL aus dem URL-Muster der Sammlung auf, oder aus /{collection}/{slug}, wenn die Sammlung keines hat, und führt das SEO-Bild des Eintrags mit der Google-Bild-Sitemap-Erweiterung auf.
Jede untergeordnete Sitemap enthält bis zu 2.000 Einträge, geordnet nach Eintrags-ID, damit das Bearbeiten eines Eintrags ihn nicht auf eine andere Seite verschiebt. Größere Sammlungen setzen sich unter /sitemap-{collection}-2.xml, /sitemap-{collection}-3.xml usw. fort. Der Index führt jede Seite mit dem Datum des zuletzt aktualisierten Eintrags dieser Seite auf.
Fügen Sie die Sitemap-URL in der Google Search Console oder in den Bing Webmaster Tools hinzu, um dort ihren Indexierungsstatus zu sehen.
robots.txt
EmDash liefert /robots.txt aus. Standardmäßig erlaubt sie alle Crawler, sperrt /_emdash/ und verweist auf die Sitemap:
User-agent: *
Allow: /
# Disallow admin and API routes
Disallow: /_emdash/
Sitemap: https://example.com/sitemap.xml
Um den Standard zu ersetzen, geben Sie unter Settings > SEO > robots.txt eigenen Inhalt ein. EmDash hängt die Zeile Sitemap: an, wenn der eigene Inhalt keine enthält.
robots.txt und die Sitemaps bauen absolute URLs aus der Site URL unter Settings > General auf, danach aus der Option siteUrl oder der Umgebungsvariable EMDASH_SITE_URL, danach aus dem Request-Origin. Setzen Sie eine davon, damit die URLs zur öffentlichen Domain passen. Browser und geteilte Caches dürfen robots.txt bis zu einen Tag und Sitemaps bis zu einer Stunde behalten.
Websiteweite SEO-Einstellungen
Settings > SEO im EmDash-Admin enthält diese Werte:
- Title Separator ist der Text zwischen dem Seitentitel und dem Website-Namen. Er wird wirksam, wenn die Seite
settings.seo.titleSeparatoralstitleSeparatorangetSeoMeta()übergibt, wie es das Beispiel für Inhaltsseiten tut. - Default Social Image ist das
og:imagefür Seiten ohne eigenes Bild.<EmDashHead>wendet es an. - Google Verification und Bing Verification fügen die Meta-Tags
google-site-verificationundmsvalidate.01hinzu, die gegenüber der Google Search Console und den Bing Webmaster Tools den Besitz der Website belegen.<EmDashHead>fügt sie jeder Seite hinzu. - robots.txt ersetzt die Standard-
robots.txt.
Übersetzte Inhalte
Ist Astro i18n konfiguriert, verknüpft EmDash die Übersetzungen eines Eintrags für Suchmaschinen:
<EmDashHead>fügt für jede veröffentlichte Übersetzung ein<link rel="alternate" hreflang="...">sowie einenx-default-Link hinzu. Siehehreflang-Links zum Seiten-Head hinzufügen.- Jede Sammlungs-Sitemap listet jede Übersetzung als eigene URL mit
xhtml:link-Alternativen auf. Siehe Sitemaps im Internationalisierungs-Leitfaden.
Weiterleitungen und das 404-Protokoll
Verwalten Sie Regeln unter Redirects im EmDash-Admin. Eine Regel leitet entweder einen Quellpfad mit dem Status 301, 302, 307 oder 308 zu einem Ziel weiter oder beantwortet ihn mit 410 Gone oder 451 Unavailable For Legal Reasons. Quellpfade akzeptieren benannte Segmente (/old/[slug]) und Catch-all-Segmente (/old-blog/[...path]), die das Ziel wiederverwenden kann.
Ändert sich der Slug eines veröffentlichten Eintrags, erstellt EmDash auf Grundlage des URL-Musters der Sammlung eine 301-Weiterleitung von der alten zur neuen URL. Dabei werden bestehende Weiterleitungsketten, die auf die alte URL zeigten, zusammengeführt. Es wird keine Weiterleitung erstellt, solange ein anderer Eintrag, etwa eine Übersetzung, den alten Slug noch verwendet.
EmDash protokolliert Anfragen, die mit einer 404-Antwort enden. Der Tab 404 Errors auf der Seite Redirects zeigt die am häufigsten verfehlten Pfade. Für jeden können Sie eine Weiterleitung hinzufügen oder ihn als entfernt (410) markieren, was Suchmaschinen mitteilt, dass die Seite gelöscht wurde. Das Protokoll hält bis zu 10.000 Pfade vor und verwirft diejenigen, die am längsten nicht mehr gesehen wurden.
Seed-Dateien können ebenfalls Weiterleitungen definieren. Siehe Redirects in der Seed-Datei-Referenz.
Importierte SEO-Daten
Der WordPress-Import über den EmDash Exporter kann SEO-Titel und -Beschreibungen von Yoast und Rank Math in die Felder SEO Title und SEO Description der Zielsammlung kopieren. Das sind normale Inhaltsfelder, getrennt vom Bereich SEO, daher muss das Seiten-Template sie rendern.
Eine Website-Übertragung kopiert die Werte des SEO-Bereichs, die SEO-Einstellungen und die Weiterleitungen auf eine andere EmDash-Website. Die Zielwebsite behält ihre eigene Website-URL, die ihre Sitemaps und robots.txt verwenden.