Implementierung der globalen Umleitung (automatische Umleitung für alle Seiten, deren Slug geändert wurde)

Angenommen, Sie haben 20 oder sogar 50 Seiten, die permalink Änderungen erfordern. Wie können Sie danach eine automatische Redirect-Bildung für alle garantieren?

In Drupal zum Beispiel könnte man das Modul “Global redirect” installieren, das automatisch Weiterleitungen erstellt, wenn Permalinks (Aliases in Drupalese) geändert werden.

Wird es sogar in WordPress benötigt?

Solutions Collecting From Web of "Implementierung der globalen Umleitung (automatische Umleitung für alle Seiten, deren Slug geändert wurde)"

Angenommen, Sie haben 20 oder sogar 50 Seiten, die permalink Änderungen erfordern. Wie können Sie danach eine automatische Redirect-Bildung für alle garantieren?

Der Teil einer Post-URL, der in WordPress bearbeitet werden kann, wird “Slug” genannt. Für eine URL wie http://example.com/blog/abc-xyz wäre dann der “abc-xyz” -Teil der Slug. Der Slug wird anfänglich aus dem Post-Titel gebildet und kann später falls gewünscht bearbeitet werden.

Wenn Sie nun den Slug eines Posts ändern, bevor er veröffentlicht wird, macht das natürlich keinen Unterschied. Wenn Sie den Slug eines Posts ändern, der bereits veröffentlicht wurde, speichert WordPress diesen alten Slug als “postmeta” -Daten mit einem Schlüssel namens “_wp_old_slug”. Es tut dies für eine beliebige Anzahl alter Schnecken. Wenn Sie es dreimal ändern, dann haben Sie drei alte Nacktschnecken für diesen Posten gespeichert.

Wenn Sie einer alten URL folgen, stimmt der alte Slug nicht mit dem aktuellen überein, da er geändert wurde. Daher wird die Hauptpostabfrage den neuen Beitrag nicht finden. Also, WordPress hat eine function, um das für alte Schnecken zu handhaben.

Während der Startsequenz wird die function wp_old_slug_redirect() von der Aktion template_redirect aufgerufen. Wenn die normale Abfrage erfolgreich war, kehrt die function zurück und tut überhaupt nichts. Wenn die Abfrage jedoch nicht erfolgreich war und in der URL ein Slug bereitgestellt wurde, führt diese function eine Suche des Post-Metas durch, um nach einer Übereinstimmung zwischen diesen alten Slug-Werten zu suchen. Wenn es eine Übereinstimmung findet, erhält es die neuere korrekte URL (Permalink) für diesen Beitrag und sendet eine 301-Weiterleitung dafür zurück.

Also, kurze Antwort auf Ihre Frage: WordPress behandelt diesen Fall automatisch. Gebaut direkt in.

Als Referenz wurde diese functionalität WordPress in Version 2.1 hinzugefügt.

Der einfachste Weg ist, gehen Sie einfach zu Ihrem Htaccess und verwenden Sie für die 20 Seiten.

Redirect 301 / Oldpage http://www.theurl.com/page-to-redirect

HINWEIS: Vergeben Sie das Kopfgeld nicht an mich, geben Sie Jorin, die Verwendung von Redirect 301 in htaccess ist in der Regel der einfachste Weg, um einen einmaligen Anwendungsfall wie Ihren zu erreichen .

Sie können dies auf verschiedene Arten tun …

Htaccess verwenden (empfohlen)

 Redirect 301 /old-permalink http://example.com/new-permalink 

oder verwenden Sie eine RewriteRule-Deklaration, wenn Sie über gemeinsame Permalink-Pfade verfügen

 RewriteEngine On RewriteRule ^some-common-path/(.*)/$ /new-common-path/$1 [L,R=301] 

Verwenden eines Plugins:

(beide sind ziemlich gut für das, was sie sind)

Mit der PHP-Logik schmutzig umgehen:

 function maybe_redirect_request() { $redirects = array( 'old-permalink' => 'new-permalink', 'old-permalink/page/2' => 'new-permalink/page/2', //etc... ); $request_uri = !empty($_SERVER['REQUEST_URI']) ? trim($_SERVER['REQUEST_URI'], '/\\') : ''; if ( $request_uri && array_key_exists($request_uri, $redirects) ) { wp_redirect( home_url($redirects[$request_uri]), 301 ); exit; } } add_action('init', 'maybe_redirect_request'); //or perhaps the "request" filter