Diese Checkliste für WordPress Technical SEO richtet sich an Entwickler, die eine Installation technisch sauber aufsetzen oder eine bestehende Site auditieren wollen. Sie geht über Plugin-Einstellungen hinaus und behandelt auch Code-Ebene-Konfigurationen, Server-Einstellungen und häufige technische Fehler.
Grundkonfiguration: WordPress-Einstellungen
Permalink-Struktur:
Einstellungen → Permalinks → „Beitragsname” (/%postname%/). Dieser Wert ist SEO-freundlichst. Nach einer Änderung immer auf „Änderungen speichern” klicken, um .htaccess zu aktualisieren.
Blog-Öffentlichkeit: Einstellungen → Lesen → „Suchmaschinen davon abhalten, diese Website zu indexieren” muss DEAKTIVIERT sein. Klassischer Fehler bei Entwicklungsinstallationen, die produktiv gegangen sind.
Canonical Base URL:
Stellen Sie sicher, dass siteurl und homeurl (in der Datenbank in wp_options) mit dem bevorzugten Protokoll (https://) und Domainformat (ohne www) übereinstimmen. Abweichungen erzeugen Duplicate Content.
Zeitzone:
Einstellungen → Allgemein → Zeitzone auf Ihre lokale Zone setzen. Beeinflusst lastmod-Zeitstempel in der Sitemap.
HTTPS und Sicherheit
// In wp-config.php: erzwingt HTTPS für Admin-Bereich
define('FORCE_SSL_ADMIN', true);
// Sicherheits-Header in functions.php
add_action('send_headers', function() {
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: SAMEORIGIN');
header('Referrer-Policy: strict-origin-when-cross-origin');
});
HTTPS-Redirect in .htaccess (Apache):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# www auf non-www umleiten
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
Über 35 % aller WordPress-Installationen in Produktivumgebungen haben Mixed Content Probleme – verursacht durch Inhalte die nach einer HTTPS-Migration noch auf http:// verweisen.
robots.txt korrekt konfigurieren
WordPress generiert eine Standard-robots.txt. Für SEO empfehlenswert:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /?s= # Suchergebnisse
Disallow: /trackback/
Disallow: /xmlrpc.php
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.de/sitemap.xml
Für WooCommerce zusätzlich:
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /wishlist/
XML-Sitemap prüfen
Mit Rank Math oder Yoast SEO generierte Sitemaps prüfen:
- Sitemap erreichbar unter
/sitemap.xmloder/sitemap_index.xml - Nur öffentliche, indexierte URLs enthalten
- Kein noindex-Seiten in der Sitemap
lastmod-Timestamps korrekt
# Mit curl Sitemap prüfen
curl -s https://example.de/sitemap.xml | head -20
# Alle URLs in Sitemap zählen
curl -s https://example.de/sitemap.xml | grep -c '<loc>'
Praxistipp: Vergleichen Sie die Anzahl der URLs in Ihrer Sitemap mit der Anzahl indexierter Seiten in Google Search Console. Große Diskrepanzen (> 20 %) weisen auf Indexierungsprobleme hin – entweder werden zu viele oder zu wenige Seiten in der Sitemap gelistet.
Canonical-Tags verifizieren
Mit Yoast oder Rank Math werden Canonicals automatisch gesetzt. Prüfen Sie auf Korrektheit:
// Custom Canonical für spezifische Seiten via functions.php
add_filter('wpseo_canonical', function($canonical) {
if (is_page('spezielle-seite')) {
return 'https://example.de/richtige-url/';
}
return $canonical;
});
Typische Canonical-Probleme:
- WooCommerce Produkt-Varianten ohne korrekten Canonical
- Paginierung ohne rel=next/prev (veraltet, aber noch relevant)
- Tag-Seiten ohne Canonical oder mit falschem Canonical
- Startseite pointing auf
/statt auf kanonische URL
Open Graph und Twitter Cards
Rank Math und Yoast generieren diese automatisch. Manuell für Nicht-Plugin-Installationen:
// Open Graph Tags in functions.php
function custom_og_tags() {
if (is_singular()) {
$thumbnail = get_the_post_thumbnail_url(get_the_ID(), 'large');
echo '<meta property="og:title" content="' . esc_attr(get_the_title()) . '">';
echo '<meta property="og:type" content="article">';
echo '<meta property="og:url" content="' . esc_url(get_permalink()) . '">';
if ($thumbnail) {
echo '<meta property="og:image" content="' . esc_url($thumbnail) . '">';
}
}
}
add_action('wp_head', 'custom_og_tags', 5);
Schema.org Markup
WordPress generiert kein Schema-Markup nativ. Über Rank Math oder Yoast Premium:
Wichtige Schema-Typen für verschiedene Seiten:
- Startseite/Über uns:
OrganizationoderLocalBusiness - Blogbeiträge:
BlogPostingmitauthor,datePublished,dateModified - FAQ-Seiten:
FAQPagemitQuestion/Answer - Produkte (WooCommerce):
Productmitoffers,aggregateRating
Manuell im Theme (functions.php):
function add_local_business_schema() {
if (is_front_page()) {
$schema = [
'@context' => 'https://schema.org',
'@type' => 'LocalBusiness',
'name' => get_bloginfo('name'),
'url' => home_url(),
'telephone' => '+49911...',
'address' => [
'@type' => 'PostalAddress',
'streetAddress' => 'Musterstraße 1',
'addressLocality' => 'Nürnberg',
'postalCode' => '90402',
'addressCountry' => 'DE',
],
];
echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
}
}
add_action('wp_head', 'add_local_business_schema');
Bildoptimierung für SEO
// Alt-Texte für alle Bilder prüfen
// WP-CLI: Bilder ohne Alt-Text finden
// wp eval 'echo count(get_posts(["post_type" => "attachment", "meta_query" => [["key" => "_wp_attachment_image_alt", "compare" => "NOT EXISTS"]]]));'
// Lazy Loading für alle Bilder aktivieren (WordPress 5.5+ nativ)
// Prüfen ob loading="lazy" korrekt gesetzt wird:
// Bilder im Viewport sollen loading="eager" haben (LCP-Bild!)
add_filter('wp_lazy_loading_enabled', '__return_true');
// LCP-Bild von Lazy Loading ausschließen
add_filter('the_content', function($content) {
return str_replace(
'class="wp-post-image" loading="lazy"',
'class="wp-post-image" loading="eager" fetchpriority="high"',
$content
);
});
Das LCP-Bild mit loading="lazy" ist einer der häufigsten LCP-Performance-Fehler in WordPress – es verzögert den Largest Contentful Paint um 200–800 ms.
Caching korrekt einrichten
Page Caching: WP Rocket, W3 Total Cache oder LiteSpeed Cache. Wichtig: Caching nicht für eingeloggte Nutzer aktiv.
Browser Caching:
# In .htaccess (Apache)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
GZIP-Komprimierung:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
Häufige technische SEO-Fehler in WordPress
Doppelte Inhalte durch:
- www und non-www ohne Redirect
- http und https ohne Redirect
- Trailing Slash und ohne Trailing Slash (
/seite/und/seite) - Großschreibung in URLs
Indexierungsprobleme:
- Tag-Archive ohne noindex (erzeugen Thin Content)
- Autoren-Archive bei Single-Autor-Blogs ohne noindex
- Suchergebnisseiten in Sitemap
- 404-Seiten in der Sitemap
Performance-Probleme:
- Viele deaktivierte Plugins (laden trotzdem oft Code)
- jQuery-Migrate geladen (nicht mehr nötig ab WordPress 6.x)
- Ungenutzte CSS-Stylesheets von Plugins
wp-config.php Optimierungen: Setzen Sie Speicherlimits und Debug-Einstellungen korrekt für Produktivumgebungen: define('WP_DEBUG', false) und define('WP_MEMORY_LIMIT', '256M'). Debug-Mode in Produktion kann sensible Informationen preisgeben und verlangsamt die Site.