Back to Question Center
0

Semalt: Ist es OK, dass SEO einen 200-Status sendet, wenn ich die Anfrage tatsächlich an einen Controller umschreibe und dann Inhalt dynamisch auf einer Seite ausspreche?

1 answers:

Semalt liest endlose Seiten über Weiterleitungen und Best Practices, ich bin mir immer noch nicht sicher, ob das, was ich hier mache, gut, schlecht oder gleichgültig ist, was SEO angeht php

  • Der Controller prüft, ob die Anfrage-URL in der Datenbank existiert
  • Wenn dies der Fall ist, und es ist nur eine benutzerfreundliche URL, dann sendet es einen 200-Header und gibt den Seiteninhalt aus (ohne die benutzerfreundliche URL in der Adressleiste zu ändern)
  • Wenn es sich um eine einfache Weiterleitung handelt, sendet es einen 301-Redirect-Header an die neue URL (die benutzerfreundlich ist und diesen Prozess erneut durchläuft)
  • Wenn es nicht in der Datenbank gefunden werden kann, sendet es einen 404-Header und gibt den Inhalt der 404-Seite aus PHP $ / Controller. php [L, NC]

    und mein Controller. php ist wie folgt:

        $ originalURI = $ _SERVER ['REQUEST_URI'];$ controller = neuer Controller ($ originalURI);if ($ controller-> GetRedirectAddress  
    ) {// gibt abhängig vom Linktyp entweder 200 oder 301 Statuscode ausKopfzeile ($ _ SERVER ["SERVER_PROTOCOL"]. "" - registrations ytb.
  • February 5, 2018

    dann sendet es einen Header von 200 und gibt den Seiteninhalt aus (ohne die URL in der Adressleiste zu ändern)

    Was du machst, klingt vollkommen OK. Wenn Sie eine gültige Antwort senden, ist ein 200 OK-Status die richtige Vorgehensweise. Es gibt nur eine Antwort von Ihrem Server in diesem Fall, also welche anderen Code (s) könnten Sie hier zurückgeben?

    Ist es in Ordnung, einen 200-Status zu senden, wenn ich die Anfrage tatsächlich an einen Controller umgebe und dann Inhalte dynamisch auf einer Seite ausspeise?

    Es mag ein wenig Verwirrung darüber geben, was hier tatsächlich passiert; Was ist ein internes Neuschreiben eigentlich? Obwohl Sie scheinen, beschreiben Sie den Prozess vollkommen in Ordnung. (Vielleicht fiel der Groschen in Kommentare?)

    1. Der Nutzer stellt eine Anfrage an eine Ihrer benutzerfreundlichen URLs (beachten Sie, dass es sich streng genommen um benutzerfreundliche und nicht um SEO-freundliche URLs handelt ) z.B. Beispiel. com / freundlich-url .

    2. Da diese URL nicht direkt auf eine Datei oder ein Verzeichnis abgebildet wird, wird die Anforderung intern neu geschrieben zu / Controller Dieses Designmuster wird als "Frontcontroller" bezeichnet.Dies ist vollständig intern für Ihren Server. Der Benutzer (oder der Suchmaschinen-Bot) ist sich nicht bewusst, was wirklich vor sich geht - die Komplexität, die mit der Erzeugung Ihrer Seite verbunden ist, ist nicht sichtbar.

    3. Ihr "Controller" entscheidet, dass es sich um eine gültige Anfrage handelt, erstellt die Seite und sendet sie mit 200 OK-Status an den Client zurück. Soweit es den Client / Benutzer / Such-Bot betrifft, könnte es auch eine statische HTML-Seite gewesen sein. (In der Tat könnte es gewesen sein, wenn Sie es aus einem serverseitigen Cache irgendeiner Art gezogen hätten. )

      RewriteRule! ^ \ / Controller \. PHP $ / Controller. php [L, NC] 

    Allerdings gibt es ein paar kleinere Probleme mit Ihrer RewriteRule -Richtlinie:

    1. In einem Verzeichnis / . htaccess context, das Muster RewriteRule (d. h. ! ^ \ / Controller \. php $ ) wird immer erfolgreich sein . Die Rewrite-Schleife wäre jedoch immer noch verhindert worden, weil die URL unverändert weitergelaufen wäre (sie stoppt nur etwas später). (Es gibt auch keine Notwendigkeit, Schrägstriche in der Regex zu entkommen, da es keine Schrägstriche gibt. )

    2. Sie sollten die NC Flagge entfernen. Dies ermöglicht eine Übereinstimmung zwischen Groß- und Kleinschreibung, wie Sie sicher wissen. Dies wird jedoch auf ein negiertes Muster angewendet. Sie möchten, dass es neu geschrieben wird, wenn es nicht "Controller" ist. php "(genau), nicht wenn es nicht" CONTROLLER ist. pHp "usw. Unwahrscheinlich, ein Problem zu verursachen, aber es könnte und NC ist nur mehr Arbeit.

    So haben wir

      RewriteRule! ^ Controller \. php [L]