Ich möchte jede Kategorieseite auf die URL redirect, die von /category
vorangestellt wird. Beispielsweise; Ich möchte /blog
redirect zu / category / blog
Warum? Aus irgendeinem Grund /blog
gibt zum gleichen Ergebnis wie /category/blog
, aber wenn Sie / Blog besuchen, funktioniert die Navigationsstruktur nicht mehr. Die nächste Seite der /blog/page/2
wird /blog/page/2
statt /category/blog/page/2
. Das erste Beispiel gibt eine 404-Seite zurück.
Meine Permalink-Struktur ist auf /%category%/%postname%/
und auf der Permalink-Seite habe ich die categorybase auf “categorie”, Niederländisch auf category gesetzt (also lies jede Kategorie oben als Kategorie haha).
Irgendwo im Internet habe ich den folgenden Code gefunden. Leider führt dieser Code zu einer Umleitungsschleife:
add_filter('term_link', 'term_link_filter', 10, 3); function term_link_filter( $url, $term, $taxonomy ) { if ( is_category( 'blog' ) ) { $url = site_url( '/categorie/blog' ); wp_safe_redirect( $url, 301 ); exit; } return $url; }
Hoffentlich wird jemand eine Lösung kennen.
Ihr Code funktioniert ordnungsgemäß, aber die Logik des Codes ist falsch. Sie tun dies: Wenn wir in der Kategorie “Blog” sind, leiten Sie sie in die Kategorie “Blog” um. Also, wenn Sie in die Kategorie Blog gehen, werden Sie für immer weitergeleitet werden. Sie sollten sorgfältig darüber nachdenken, was /blog
URL ist und die ordnungsgemäße Überprüfung vornehmen.
Wie auch immer, bei 301 Umleitungen versuche ich lieber zuerst .htaccess. Wenn es durch .htaccess getan werden kann, tun Sie es; Sie sparen Serverressourcen, da die Umleitung vor dem Laden von PHP-Code erfolgt.
Versuchen Sie dies in Ihrem .htaccess:
RedirectMatch 301 ^/blog(.*)$ http://example.com/category/blog$1
Der obige Code tut das: Wenn die URL mit /blog(any-string-here)
beginnt, leite sie zu /category/blog(any-string-here)
mit 301 HTTP-Statuscode um.
Wenn du genau fangen willst /blog
to /category/blog
:
RedirectMatch 301 ^/blog$ http://example.com/category/blog