Accéder au contenu principal

[htaccess] rediriger vos anciennes pages vers celles de CakePHP

Si vous êtes ici c'est que vous avez sans doute commencer à travailler avec CakePHP et que vous avez d'ailleurs presque fini. Si ce n'est pas le cas, je vous conseille vivement de vous tourner vers un autre framework ou de faire votre propre framework si vous vous en sentez le courage ou encore de vous demander si vous avez vraiment besoin des outils d'un framework pour votre site. Cela dit, si votre nouveau site est développé et que vous cherchez comment faire vos redirection proprement sans que CakePHP dépasse à nouveau son rôle pour gérer les erreurs 301.

La directive rewrite de .htaccess vous permet de faire rapidement toutes les redirections dont vous avez besoin pour ne pas perdre vos visiteurs venant sur les anciennes adresses. Comme toujours, un exemple vaut mieux que de longs discours, voici :

Pour le site go2you.fr, les urls ont changé de http://www.go2you.fr/8-chercher-votre-amoureux-mecacroquer.php vers http://www.go2you.fr/sites-de-rencontre/chercher-votre-amoureux-mecacroquer-8 et il était donc nécessaire de faire les redirections correctement pour ne pas perdre les internautes qui arrivent par l'ancien lien.
Au lieu de procéder à un redirect 301 comme il est d'usage, il faut réécrire l'url avec un rewrite qui se termine avec [R=301, L].
RewriteRule ^chercher-votre-amoureux-mecacroquer.php$ sites-de-rencontre/chercher-votre-amoureux-mecacroquer-8 [R=301,L]
Vous créez autant de lignes que vous en avez besoin mais n'oubliez pas que vous pouvez quand même utiliser les expressions rationnelles pour vous simplifier la tâche comme c'est expliqué dans cet article sur la réécriture d'url avec htaccess

Commentaires

  1. Bonjour,

    Ceci n'est pas lié à CakePHP du tout, c'est même la base du travail de redirections et de développeur web que de savoir manipuler le .htaccess et vous faites bien de le souligner.

    En revanche on sent bien votre frustration vis à vis de ce framework, mais je n'y vois aucun argument concret.
    Sans doute vos besoins (site basique) ne le justifient pas, mais plutôt que de prôner le développement de son propre framework (encore un autre, trop basique / instable / coûteux à maintenir) je pense qu'il faudrait plutôt envisager les micro-frameworks. Par exemple: Slim, Silex, Limonade ou FlightPHP.

    RépondreSupprimer
  2. Contre CakePHP, j'aurais d'abord la logique vis-à-vis des bases de données. Avoir besoin d'une clé primaire non-composée dans chaque table relève plus de l'aberration que d'une quelconque logique. Cela limite fortement les requêtes portant sur plusieurs tables inter-reliées. Je peux aussi parler de la gestion dans le framework des clefs étrangères et des dépendances. Il y a aussi les conventions de nommage qui permettent au framework de fonctionner mais qui ne sont absolument pas parlantes en fonction des besoins.
    Ce framework, je ne l'ai pas choisi et je regrette de ne pas avoir tout repris à 0. Je ne connais pas les micro-framework dont vous faites la publicité. Cependant, concernant l'opportunité ou pas de développer son propre framework en MVC avec les outils dont on a besoin, je ne trouve pas cela basique mais plutôt adapté, l'instabilité d'un programme dépend du développement et je ne vois pas en quoi, cela peut-être plus onéreux à maintenir sachant que PHP sans framework propose déjà beaucoup d'outils dont on a besoin.

    RépondreSupprimer

Enregistrer un commentaire

Posts les plus consultés de ce blog

[PHP] Faire un petit MVC avec des routes

Pour bon nombre de petits projets, il n'est pas nécessaire de taper dans les frameworks MVC comme Zend ou Symphony qui sont très lourds et un petit truc maison doit suffire. Je vais essayer de donner quelques tuyaux pour pouvoir faire son MVC maison avec des routes qui dirigent vers les contrôleurs et les actions.
Tout d'abord, il faut créer un fichier index.php à la racine de votre site qui va contenir le lien vers tout ce dont vous avez besoin pour faire vos routes. Ensuite, vous devez créer un dossier controlleur (si vous voulez reproduire la faute de frappe de l'exemple) dans lequel vous aurez tous vos contrôleurs. Vous pouvez éventuellement diviser ce dossier en plusieurs dossiers distincts qui contiendront les différentes parties de votre site. Veillez à appeler vos classes en rapport avec vos règles de is_callable. Dans mon exemple, le chemin vers le dossier est en minuscule et la première lettre du fichier est en majuscule. Par exemple : la classe /controlleur/fro…

[Magento 2]Le système de cache

A la lecture de l'article d'Alan Kent sur le système de cache de Magento 2, on ne peut que se réjouir d'une vraie prise de conscience du problème qui avait été déjà pris en compte avec la mise en place des modules Redis de Colin Mollenhour dans Magento 1.8 qui avait permis d'améliorer considérablement les performances sur des Magento à moyen et gros volumes. J'avais pris l'initiative de mettre en place ces deux modules (Session et Backend) sur des 1.7 au grand soulagement des clients qui ont vu les temps de réponses s'améliorer avec un temps de chargement parfois divisé par trois.
Pour la future version de Magento, le système de cache se basera a priori sur un cache de page complète du type Varnish avec un chargement en Ajax pour les parties de la pages qui sont spécifiques à l'utilisateur. On pense notamment au récapitulatif du panier, aux liens vers les différentes parties du compte... En s'appuyant tout de même sur le cache du navigateur pour cac…

Ajouter un administrateur à Magento 1 en SQL

On vous balance sur un projet, vous devez récupérer la base de données et travailler dessus dans votre environnement de développement. Le problème est que vous n'avez pas d'accès à l'administration car vous n'avez pas d'utilisateur créé en production ou en staging. Ce n'est pas une fatalité !

Il est possible de créer facilement un utilisateur qui aura les rôles suffisants dans Magento avec seulement un accès à la base de données. Pour faire cela, il faut comprendre que les administrateurs sont inscrits dans une table et leur rôle dans une autre. Dans le script suivant, on créera un administrateur avec les pleins pouvoirs mais vous pouvez adapter ce script à vos besoin en jetant un oeil à la table admin_role et en modifiant parent_id dans le script. La colonne parent_id définit le parent du rôle en question pour l'utilisateur. Si vous voulez créer un utilisateur avec des pouvoirs différents, regardez le rôle qui correspond au pouvoir que vous accorder et mo…