URI gibt einen Post zurück, wenn ein 404 zurückgegeben werden soll

Guten Morgen alle

Ich habe eine Frage und ich denke, ich habe auch eine Lösung, aber ich wollte fragen, ob mein Denken richtig ist.

Ich habe live auf http://www.phmotorcycles.co.uk und ich habe gerade eine Anomalie gefunden, die eine potentielle SEO-Katastrophe sein könnte.

Die Seite verwendet die Plugin-Toolset-Typen und ich habe einen benutzerdefinierten Post-Typ von BIKES.

Wir haben also eine Kunden-URL-Struktur, die diesem Muster folgt:

Domain / New-Bikes /% Hersteller% /% Kategorie% /% Modell%

Das funktioniert ganz gut, aber ich habe jetzt festgestellt, dass ein Fahrrad mit dem falschen Hersteller und der falschen Fahrradkategorie zurückgegeben werden kann, zB:

http://www.phmotorcycles.co.uk/new-bikes/ktm/duke/ktm-690-duke-2012/ (KORREKT)

Das gleiche Fahrrad kann zurückgegeben werden, wenn Sie ktm gegen yamaha tauschen. Im Grunde wird jede falsche Kombination von Hersteller oder Kategorie mit dem Fahrrad am Ende eine Seite zurückgeben, die nicht korrekt ist.

Beide Links rufen eine angepasste singles.php-Seite auf, die die globale $ post-Variable verwendet, um die Informationen aus der WP-database zurückzugeben.

Meine Lösung:

  1. Erfassen Sie die URL und teilen Sie sie in separate Teile auf, um Hersteller, Kategorie und Modell darzustellen.
  2. Fragen Sie die $ post-Variable für jede Information ab und vergleichen Sie sie
  3. Wenn sie gut passen, wenn sie nicht übereinstimmen, erzwingen Sie einen 404

Das scheint ziemlich klar zu sein, aber neu in WordPress zu sein. Ich bin mir nicht sicher, ob es einen einfacheren Weg gibt, um sicherzustellen, dass WordPress dies für mich tut.

Irgendwelche Ratschläge, Tipps oder Tricks würden sehr geschätzt werden.

Solutions Collecting From Web of "URI gibt einen Post zurück, wenn ein 404 zurückgegeben werden soll"

WordPress versucht zu erraten, welchen Post der Benutzer nach dem Postnamen sehen möchte. Das ist es, was sowohl example.com/new-bikes/ktm/duke/ktm-690-duke-2012/ als auch example.com/new-bikes/ktm/yamaha/ktm-690-duke-2012/ das gleiche example.com/new-bikes/ktm/duke/ktm-690-duke-2012/ example.com/new-bikes/ktm/yamaha/ktm-690-duke-2012/ und “richtigen” Inhalt.

Wichtig ist, dass Sie, wenn Sie den Quellcode von example.com/new-bikes/ktm/yamaha/ktm-690-duke-2012/ , sehen können, dass die kanonische URL korrekt auf example.com/new-bikes/ktm/duke/ktm-690-duke-2012/ . Der Nutzer bekommt, was er sucht und Suchmaschinen kennen die kanonische URL, also gewinnt jeder.

Daher empfehle ich nicht, einen 404-Fehler auf example.com/new-bikes/ktm/yamaha/ktm-690-duke-2012/ zu erzwingen, und ich denke, Sie sollten sich darüber keine Sorgen machen.

Wenn Sie diese URL wirklich vermeiden möchten, würde ich den Benutzer auf die kanonische URL mit einem 301-Statuscode redirect, anstatt einen 404 zu erzwingen:

 add_action( 'template_redirect', 'cyb_canonical_redirect' ); function cyb_canonical_redirect() { global $wp; if( is_singular() ) { $id = get_queried_object_id(); $canonical_url = get_permalink( $id ); $current_request = site_url( $wp->request ); // Compare current request and canonical url if( $canonical_url != $current_request) { wp_redirect( $canonical_url, 301 ); exit(); } } }