it-swarm.com.de

Leiten Sie alle URLs von Posts ohne .html zu .html um

Wie kann ich in Wordpress alle Posts-Permalinks auf .html umleiten? Jetzt enden alle meine Posts mit .html, aber vorher ohne .html

um es klarer zu machen, zum Beispiel, dass eine Post-URL wie diese www.example.com/posturl zu www.example.com/posturl.html umgeleitet wird. Es ist einfach, sie einzeln umzuleiten, aber ich brauche eine Regel, um alle umzuleiten Beiträge.

Vielen Dank

2
whitelord

Sie haben angegeben, dass Sie dies für SEO-Zwecke tun.

Derzeit gibt es keinen Beweis dafür, dass das Hinzufügen von .html am Ende der URL die SEO von Google verbessert, und nach Ihren eigenen Angaben indiziert Google stattdessen die nicht mit HTML endenden URLs.

Darüber hinaus impliziert die Erweiterung .html, dass der Inhalt statisch ist und sich niemals ändert. Dies bedeutet, dass Google ihn einmal indizieren und niemals zurückgeben kann. Wäre es nicht vorzuziehen, dass Google zurückkommt? Vor allem, wenn man bedenkt, dass die "Frische" einer Seite jetzt eine große Rolle spielt, wie hoch sie eingestuft ist.

1
Tom J Nowell

Der .htaccess-Ansatz birgt ein Risiko. Er muss bestimmte Regeln aufstellen, um nur Posts anzusprechen. Nicht alle URLs auf dem Server.

Dies ist ein anderer Ansatz. Funktioniert in Wordpress, ist sicherer, aber ein bisschen leistungsintensiv, da die Plugins geladen werden müssen, bevor sie eingesetzt werden. Die Theorie ist einfach. Leiten Sie alle URLs um, die nichts enthalten. im letzten Segment wie/uri oder/uri/nach /uri.html ... NUR WENN WordPress einen is_404 () Fehler meldet .

Fügen Sie dieses Plugin in das Verzeichnis /wp-content/mu-plugins/redirector.php ein.

// Only here we have a valid is_404() to check if occurs.
add_action('wp', function(){
    if(!is_404()) return; // Bail if not a 404 (WordPress has got your back)
    // Extract the URI and the Query-String (which is used later again)
    list($uri, $qs) = explode('?', $_SERVER['REQUEST_URI']);
    // Bail if current URL contains a . in the last segment of the URI
    if(!preg_match('~/[^/\.]+/?$~', $uri)) return;
    // Right-trim the last ./ and append the .html to it
    $uri = rtrim($uri, '/.').".html".(!empty($qs) ? "?{$qs}" : null);
    // Redirect to the new URL (with a 301 to keep link juice flowing) and hope it works :)
    wp_redirect($uri, 301); die; // Over and out!
});

Ich würde lieber jederzeit für eine .htaccess-Umleitung gehen aber es kommt darauf an. Wenn Sie Ihr Blog wirklich durcheinander gebracht haben, indem Sie die Permalink-Struktur LIVEgeändert haben (was niemals geschehen sollte, wenn bestimmte Traffic-/Rankings erreicht wurden), ist dies eine sicherere Methode, da es nur dann funktioniert, wenn ein is_404 vorliegt () tritt ein. Passen Sie es an, wenn Sie Probleme mit Kategorien usw. haben.

Warnung :PHP 5.3+ Closure verwendet. Betrachten Sie die Rückkehr zu PHP 5.2 Syntax und Kompatibilität ... eine Zuordnung:)

1
EarnestoDev

Sie können Ihre .htaccess-Datei direkt bearbeiten oder ein htaccess-Editor-Plugin für WordPress herunterladen. Dann schreiben Sie Ihre Regel ähnlich wie folgt:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*) $1.html [nc]

Für mehr detaillierte Anweisungen

1
Bitmap Media

Sie können Ihren Post-Permalinks in Wordpress Admin eine Erweiterung hinzufügen, indem Sie zu Settings > Permalinks gehen und am Ende eine benutzerdefinierte Struktur mit der Erweiterung .html erstellen.

Zum Beispiel:

(•) Custom Structure: /%category%/%postname%.html

Dies funktioniert jedoch nur mit Posts. Wenn Sie .html zu den Permalinks von Pages hinzufügen möchten, können Sie ein Plugin wie Benutzerdefinierte Seitenerweiterungen oder die von Bitmap bereitgestellte .htaccess-Regel verwenden.

1
supertrue