Sidebar
ein-/ausblenden

Umleiten mit WordPress

Plugin für WordPress SEO

Anzeige

WordPress erlaubt mit Hilfe einer Funktion einen einfachen Redirect zu einer URL, die Funktion wp_redirect() ermöglicht die Angabe einer Adresse und eines Status.

Damit ist es einfaches eine Weiterleitung auch im Backend von WordPress zu realisieren. Zwei unterschiedliche Beispiele sollen dies verdeutlichen. Der Unterschied liegt in der Abfrage der URL, auf die geprüft wird.


/**
 * Redirects to another page, with a workaround for the IIS Set-Cookie bug.
 *
 * @link http://support.microsoft.com/kb/q176113/
 * @since 1.5.1
 * @uses apply_filters() Calls 'wp_redirect' hook on $location and $status.
 *
 * @param string $location The path to redirect to
 * @param int $status Status code to use
 * @return bool False if $location is not set
 */
function wp_redirect($location, $status = 302)

Im ersten Fall wird der Inhalt der Variable $pagenow genutzt, der immer den Seitennamen enthält und so eine saubere Prüfung erlaubt. In beiden Funktionen wird die Funktion admin_url() abgefragt, da die erst seit Version 2.6 im Core von WordPress ist. Je nach Version, kann man diese Abfrage einsparen und ebenso gibt es weitere Funktionen dieser Art, die das Setzen der Adresse erleichtern, siehe Beitrag dazu.


function fb_redirect_1() {
	global $pagenow;

	if ( 'plugins.php' === $pagenow ) {
		if ( function_exists('admin_url') ) {
			wp_redirect( admin_url('edit-comments.php') );
		} else {
			wp_redirect( get_option('siteurl') . '/wp-admin/' . 'edit-comments.php' );
		}
	}
}
if ( is_admin() )
	add_action( 'admin_menu', 'fb_redirect_1' );

Die zweite Möglichkeit ist ein wenig anders und prüft auf die URL, auf die globale Variable $_SERVER und dabei den Schlüssel REQUEST_URI. Dies is tzum Beispiel bei der Abfrage des Dashboard im Admin-Bereich sinnvoll, denn dieser wird nicht immer mit einem Wert in $pagenow zurück gegeben, heißt: man erreicht das Dashboard zum Teil über die index.php oder direkt via wp-admin/.


function fb_redirect_2() {

	if ( preg_match('#wp-admin/?(index.php)?$#', $_SERVER['REQUEST_URI']) ) {
		if ( function_exists('admin_url') ) {
			wp_redirect( admin_url('edit-comments.php') );
		} else {
			wp_redirect( get_option('siteurl') . '/wp-admin/' . 'edit-comments.php' );
		}
	}
}
if ( is_admin() )
	add_action( 'admin_menu', 'fb_redirect_2' );

28 Kommentare zu „Umleiten mit WordPress“

  1. 1
    Kommentar von Raoul

    Vielen Dank für dieses kleine, aber nützliche Plug-In. Können wir wahrscheinlich bald gut gebrauchen.

  2. 2
    Kommentar von Daniel

    Ich würd gerne nach einem Userlogin/Userlogout wieder auf die vorherige Seite zurück leiten. Doch erstens hab ich nur den Hook "wp_authenticate" gefunden (und nichts für den Logout) und zweitens weiß ich nicht wie ich zur URL der vorherigen Seite komme. Auch meine if-Anweisung um Admins auszuschließen, funktioniert nicht.

    Kannst du mir vllt kurz helfen und zumindest eines der 3 Probleme lösen? :) Danke!

  3. 3
    Kommentar von Frank Bültge

    @Daniel: Die Funktion wp_logout_url() könnte helfen. Schaue mal in die beiden Beiträge (Beitrag1 & Beitrag 2), die einige Ansätze davon enthalten.

  4. 4
    Kommentar von Sebastian

    Hallo,
    Hab vielen Dank für den Super Tipp.
    ABER ;)
    Wenn ich das mache bekomme ich die Meldung

    Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\seite\wp-content\plugins\all-in-one-seo-pack\aioseop.class.php:221) in C:\xampp\htdocs\seite\wp-includes\pluggable.php on line 868

    (ist ein XAMPP) Aber ich dachte das sollte dann so gehen?
    add_action('wp_head', 'hello_world');
    function hello_world() {
    $istseite = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
    if(get_permalink() != $istsite) wp_redirect(get_permalink(), $status = 301);
    }

  5. 5
    Kommentar von Daniel

    @Frank: Alles klar. Hat geklappt. Vielen Dank.

  6. 6
    Kommentar von lukas

    Hallo Frank,

    weiß nicht ob ich jetzt falsch denke aber könnte das auch mein Problem beheben?
    Die Webseite http://kinglaurinpark.it/e/ funktioniert mit Div-Containern und Ankern und wenn nun bei Google folgende Seite gefunden wird http://kinglaurinpark.it/e/gallery/155/2009 funktioniert das ganze logisch nicht mehr :-(

    Kurz und bündig wäre mir am liebsten wenn alle URL's die nicht http://kinglaurinpark.it/e/ sind, dorthin umgeleitet werden.

  7. 7
    Kommentar von Frank Bültge

    @lukas: dazu würde ich wohl einer Weiterleitung via htaccess einrichten. Da ist man flexibler und dass spart ein wenig Ressourcen für diesen Zweck.

  8. 8
    Kommentar von lukas

    @Frank: danke, da hätte ich selbst drauf kommen können.
    was ich nicht verstehe wieso
    Redirect permanent /e/gallery/155/2009 /e/index.php
    funktioniert und
    Redirect permanent /e/gallery /e/index.php
    nicht? naja egal, vorerst klappts so und in der Zwischenzeit frische ich meine Apache-Kentnisse ein wenig auf ;-)

  9. 9
    Kommentar von Tanja

    Ich würde aber keinen 302er Status Code beim redirecten mitschicken, sondern stattdessen einen sauberen 301er ;-)

  10. 10
    Kommentar von Tobias

    Vielen Dank fürs hochladen..
    Hat mir sehr geholfen...
    Tobi

  11. 11
    Kommentar von Sascha

    Gibt es somit auch die Möglichkeit, ähnlich wie bei WikiPedia aus einem Beitrag heraus woanders hinzulinken? Würde also gerne einen Tag / Funktionsname in meinen Beitrag setzen, welcher auf eine andere Seite verlinkt.

    Beispiel: example.org/wordpress/beitrag-xy verlinkt beim Aufruf direkt auf google.com z.B.

  12. 12
    Kommentar von Frank Bültge

    @Sascha: ja, dazu gibt es diverse Plugins, schau mal im Verzeichnis bei WordPress, eventuell nach Auto Link suchen

  13. 13
    Kommentar von Kalliey

    Perfekt. Der Beitrag hat mir den Abend gerettet. :D

  14. 14
    Kommentar von Silke

    Merci! Einfach mal ein großes Dankeschön für den immer informativen Blog!

  15. 15
    Kommentar von Morten

    Hallo ich habe zwei fragen

    1. Warum nicht einfach das plugin redirect nutzen?

    mein zweite frage ist so ein bisschen im Rand bereich von das Thema, ich habe vor kurzem meine Permalink Struktur geändert, mit ein 301 redirect von alle Alten Adressen zu die neue Adressen, dies hat zu einige Problem geführt, aber die meisten konnte ich zwischen durch wieder beheben, eine Sache ist mir aber immernoch unklar.

    2. Die ganzen Backlinks zu mein Alten Unterseiten, werden seit dem wo ich die Permalink Struktur geändert haben nicht mehr angezeigt, sind die verloren? Oder was ist damit passiert ?

    Gruß, Morten

  16. 16
    Kommentar von Frank Bültge

    @Morten: Diese Umleitung hier ist eher für besondere Anforderungen von Entwicklern und Anwendern, die das Blog sehr verändern. Alternativ für diverse Weiterleitungen ist sicher die .htaccess oder das Plugin besser. Die sind weg, denn du hast ja die Permalinks geändert.

  17. 17
    Kommentar von Kroatien blogger

    @Frank, Aha, das letzte wollte ich nicht so gerne hören (:

    Die externen links funktionieren ja trotzdem durch mein redirect, von daher muss ich ja irgendwo auch Linkjuice erhalten? Oder wie bewertet google das?

  18. 18
    Kommentar von Frank Bültge

    @Kroatien blogger: Bitte keine SEO-Namen, die Kommentare werden gelöscht! Ich denke, dass der Link da ist, denn der Redirect verweist ja auf den.

  19. 19
    Kommentar von uncleboob

    Ahh! Sehr guter Tipp - so brauch ich nicht mit mächtigen Plugins etc rumhampeln.
    Werde die Weiterleitung mal ausprobieren.
    Schönen Tag noch

  20. 20
    Kommentar von Jimbo

    Ein exzellenter Tip. Hatte schon meine Probleme mit diesem Feature.

  21. 21
    Kommentar von Heiko

    Also ich komme als Newbee und Bloganfänger leider noch nicht mit klar. Mal schaun ob ich das hinbekomme.....

  22. 22
    Kommentar von Android

    Ich versuche seit Stunden den Redirect bei einem Nginx-Server hinzubekommen. Ich erhalte immer "no input file specified", wenn ich die Startseite aufrufen will. Backend funktioniert komischerweise (wp-backend). Hat jmd einen Tip?

  23. 23
    Kommentar von Klaus

    Ich muste es zwar zweimal machen aber es hat funktioniert. Bei ersten mal gabs Fehlermeldungen die ich nicht erklären konnte. Gleiche Vorgehensweise beim zweiten mal und es hat funktioniert

  24. 24
    Kommentar von Android

    Sehr interessant, leider bin ich erst jetzt darüber gestolpert, obwohl ich das Problem auch vor 2 Monaten hatte... es gibt einfach zu viele Seiten mit falschen oder eben nicht gleich zu findenden Lösungsansätzen....schade, man verliert gerade als Hobbyblogger leicht den Überblick.

  25. 25
    Kommentar von Martin

    @Frank: Immer wieder ein Dankeschön für die tollen Tipps. Ohne Dich wäre das "WordPress-Leben" bedeutet schwerer. Weiter so!

  26. 26
    Kommentar von dimido

    Danke für den Tipp. Mein Selbstversuch mit der Weiterleitung hat funktioniert - im dritten Versuch :)

  27. 27
    Kommentar von Guido

    Sehr cooler Tipp, mein Einbau ging schneller. Allerdings nicht wirklich. Bei mir hat es "nur" zwei Versuche gedauert, bis alles so gefunzt hat wie ich es wollte...

  28. 28
    Kommentar von Alexander

    Hi Frank, hat wunderbar geklappt. Wenn du noch mehr Tricks auf Lager hast, bin immer offen dafür.

Kommentar schreiben

Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.

E-Mail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Kommentar-Hilfe

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.

Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.

xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>

Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als &lt; und > als &gt; einfügt.

E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.

Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.

Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.