Ich versuche ein URL-Schema zu implementieren, das dem Stack-Überlauf in django / python ähnlich ist.
z. Das PK wird zusammen mit einem Slug des Titels in der URL gespeichert. Daher lautet die URL für diese Frage (ID # 4787731)
%Vor%Wenn ich später den Titel ändere (oder einfach irgendeinen zufälligen Fehler in die URL einfüge), dann wird die Seite immer noch wissen, welche Frage ich habe (durch die ID) und wird 301 an die richtige URL weiterleiten - z. versuchen Sie es.
%Vor%Also
Was ist der beste Weg, um kanonische Links in meine Seiten aufzunehmen, wie zum Beispiel
?& lt; link href="https://stackoverflow.com/questions/4787731/canonical-links-and-301-redirect-if-url-doesnt-match-slug" & gt;
(Kann ich get_absolute_url verwenden)
Hinweis - Diese Frage ist ähnlich, adressiert aber nur den Fall von generiert den Slug im laufenden Betrieb oder statisch.
1: Ich denke nicht, dass es einen Sinn hat, das kanonische Tag zu verwenden, wenn es sowieso 301 gibt.
Stellen Sie sich ein Szenario vor, in dem Sie die URL von /q/111/hello-world
in /q/111/foobar
ändern. Die Suchmaschinen gehen nicht davon aus, dass die beiden gleich sind, es sei denn, sie besuchen die ursprüngliche URL mit dem canonischen Tag, der auf /q/111/foobar
zeigt (was es nicht tut, weil es nun ein 301 ist, um jeden Beweis einer Beziehung zwischen den Seiten zu trennen) / p>
2: Ich würde es einfach machen. Definieren Sie ein nicht eindeutiges slug
-Feld und vergleichen Sie es mit der erfassten URL in Ihrer Detailansicht.
Ich habe Yujis hilfreiche Anweisungen befolgt, aber festgestellt, dass Sie das HttpResponsePermanentRedirect
-Objekt verwenden müssen, um eine permanente 301 anstelle der temporären 302 zu erhalten.
Tags und Links python django redirect http-status-code-301 slug