Zend Framework: Wie man eine 301-Weiterleitung von den alten Routen zu neuen Routen?
Ich habe eine große Liste von alten Routen, die ich brauche, um umzuleiten, um neue Routen.
Ich bin schon die Definition meiner Routen in der Bootstrap Datei:
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
$oldRoute = 'old/route.html';
$newRoute = 'new/route/*';
//how do I add a 301 redirect to the new route?
$router->addRoute('new_route',
new Zend_Controller_Router_Route($newRoute,
array('controller' =>'fancy', 'action' => 'route')
));
}
Wie kann ich Routen, die Umleitung der alten Routen, die mit einem 301-redirect auf die neuen Routen?
Warum der Versand von 301, wenn dabei keine Umleitung? Von was ich sehen kann tun Sie nur anzeigen die alten Routen der neue ohne redirect?
sorry, schlechtes Beispiel. Ich bin versucht, umleiten, nicht die route.
Ich habe aktualisiert das Beispiel, um deutlicher zu sein
Du bist immer noch Fragen über Router - Sie haben nichts zu tun mit Umleitungen und den (http -) response. In der Zeit, die Sie init Router haben Sie keine response-Objekt, wie die Anfrage nicht versandt noch. Also ist der einzige Weg, um umzuleiten, gibt es mit der php-header-Funktion. Aber um ehrlich zu sein, ich verstehe nicht, Ihre Frage. Ich denke, Sie wollen, dass die alten urls/Routen ('/new/route/1234') zugeordnet werden, der neue controller/Aktionen? Wenn das der Fall ist, tun Sie das nicht jede Umleitung noch nicht. Wenn es schon umgeleitet, es ist zu spät für einen http-status-code. Wo findet der eigentliche redirect passieren (code?)?
sorry, schlechtes Beispiel. Ich bin versucht, umleiten, nicht die route.
Ich habe aktualisiert das Beispiel, um deutlicher zu sein
Du bist immer noch Fragen über Router - Sie haben nichts zu tun mit Umleitungen und den (http -) response. In der Zeit, die Sie init Router haben Sie keine response-Objekt, wie die Anfrage nicht versandt noch. Also ist der einzige Weg, um umzuleiten, gibt es mit der php-header-Funktion. Aber um ehrlich zu sein, ich verstehe nicht, Ihre Frage. Ich denke, Sie wollen, dass die alten urls/Routen ('/new/route/1234') zugeordnet werden, der neue controller/Aktionen? Wenn das der Fall ist, tun Sie das nicht jede Umleitung noch nicht. Wenn es schon umgeleitet, es ist zu spät für einen http-status-code. Wo findet der eigentliche redirect passieren (code?)?
InformationsquelleAutor Andrew | 2010-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe es getan, wie diese
$this->_redirect($url, array('code' => 301))
für diese LogikInformationsquelleAutor Vadyus
Zend Framework nicht über diese Art von Funktionalität gebaut in. Also, ich habe erstellt eine benutzerdefinierte Route-Objekt, um damit umzugehen:
Dann können Sie es verwenden bei der Definition der Routen:
InformationsquelleAutor Andrew
Controller, versuchen Sie es auf diese Weise:
InformationsquelleAutor Krzysztof Cuber
Gibt es ein paar Ansätze, um dieses Problem zu lösen.
Den einfachste ist wahrscheinlich, benutzen Sie einfach Ihre
.htaccess
Datei zu tunRewriteRule pattern substitution [R=301]
Konnte man auch erkennen, welche route verwendet wurde, in der Steuerung und Umleitung basierend auf:
InformationsquelleAutor gnarf
Die Art, wie ich verwendet, es zu tun war, um die Umleitung an einen controller, der nur behandelt, leitet. Jetzt verwende ich die custom-Klasse bereits in meiner anderen Antwort.
Und der controller:
InformationsquelleAutor Andrew