Je vais commencer en recommandant l'utilisation de votre config apache pour placer les réécritures si possible. C'est beaucoup plus rapide que d'utiliser .htaccess et votre application Zend Framework.
Je dirai également que vous voulez utiliser les redirections 301 car elles sont les meilleures pour les moteurs de recherche lorsque votre contenu a été déplacé de façon permanente. Si vous souhaitez utiliser votre application Zend Framework pour ce faire et si vous avez un tas d'URL qui peuvent avoir des structures différentes, le meilleur endroit est dans le contrôleur d'erreur par défaut comme un «dernier effort». La raison en est que si vous avez une URL /myoldurl
qui n'existe pas maintenant (mais qui est sur votre liste de redirection) et que vous l'implémentez dans le futur comme son propre contrôleur/module - votre contrôleur prendra automatiquement le relais.
intérieur errorAction()
il y a un interrupteur qui décide si votre erreur est un 404 ou un 500.
A l'intérieur du bloc 404, vous pouvez ajouter du code à faire une redirection. Ce code n'est pas complet, regardez-le et insérez les données manquantes si nécessaire.
// [code omitted]
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// this is the original request string ie: /myoldurl
$pathinfo = $this->_request->getPathInfo();
// decide if pathinfo is in your redirect list
if ($pathinfo is in some list of old urls) {
// and get $newurl from your list
$newurl = something from a list of new urls;
// set redirect code to 301 instead of default 302
$this->_helper->redirector->setCode(301);
$this->_redirect($newurl);
}
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = 'Page not found';
break;
//[...]
Connaissez-vous ou avez-vous un moyen de connaître toutes les URL affectées? – Hannes
Oui, je vais devoir créer une liste de toutes les anciennes URL et où elles pointeront quand même. (Ça va être ennuyeux ...: /) – AngelP