Mir ist kürzlich bei einem Projekt eine Situation untergekommen, in der ich bestimmte URLs an einen anderen Sitecore-Ort umleiten musste.
Ich wusste, dass ich die URL beibehalten wollte, wie sie war, aber ich brauchte sie, um anderen Sitecore Content zu liefern. Ich wollte auch keinen Client Side Redirect vornehmen, also habe ich ein wenig im Netz gestöbert und fand die Lösung: Die Erstellung eines Server Side Redirect.
Um dies mit Sitecore zu machen, muss man den HttpRequestBegin Pipeline Prozessor modifizieren. Der Prozessor, den man überschreiben muss lautet: Sitecore.Pipelines.HttpRequest.ExecuteRequest.
<processor type=“Sitecore.Pipelines.HttpRequest.ExecuteRequest, Sitecore.Kernel“/>
Bei dieser Methode muss man überprüfen, ob die Konfiguration des UseServerSideRedirect auf “true” eingestellt ist. Man kann diese Einstellung in der Konfigurationsdatei treffen. Sehen Sie sich in der Konfigurationsdatei den „RequestErrors.UseServerSideRedirect“-Wert an; Standardmäßig ist dieser auf “false” eingestellt. Ändern Sie den Wert auf “true”.
Als nächstes muss man sicherstellen, dass der Code die original URL abruft. Momentan ruft diese Methode die 404-Seite ab. Unter der Verwendung der original URL fährt man dann damit fort zu überprüfen, ob es auch die URL ist, die man umwandeln will oder ob es sich nur um eine normale 404 handelt.
Das Entscheidende findet in der GetItemFromUrl-Methode statt. Diese analysieren wir nun einmal:
Diese Methode erhält eine URL. Wenn man bestimmte Teile daraus entnimmt und ersetzt, kann man sie in den Sitecore-Pfad umwandeln und somit zu dem Item machen, das wir tatsächlich benötigen (oder man kann es auch standardmäßig durch ein Item ersetzen, was normalerweise bei einem 404-Item der Fall ist).
Wenn man dann den echten Sitecore-Pfad in das Item eingesetzt hat, muss man nur noch auf die Datenbank zugreifen und sie abrufen.
Bei der PerformRedirect-Methode ersetzt man nun den aktuellen HTTPContext mit dem Kontext, den wir gerade abgerufen haben.
Das ist der ganze Trick. Haben Sie schon einen Server Side Redirect auf Ihrer Sitecore Site ausprobiert? Berichten Sie darüber im unten stehenden Kommentarbereich.
Quellen:
Der Original-Blogeintrag stammt von unserem Partner Oshyn. Zu finden unter http://oshyn.com/_blog/Web_Content_Management/post/How_to_do_a_Sitecore_Server_Side_Redirect/
Einige der Informationen aus diesem Post stammen aus dem Victor Feinman Blog (http://www.victorfeinman.com/).
Wir möchten an dieser Stelle bei Diego Rebosio CEO at Oshyn für die Bereitstellung des Contents bedanken.