J'ai environ 6000 URL qui doivent être redirigées après avoir changé le CMS. Toutes ces URL sont stockées dans une table de base de données avec un ID qui me permet de dire ce qui est référencé. En utilisant cette table, je pourrais générer un énorme .htaccess avec beaucoup de règles de réécriture, mais je suppose que cela est très inefficace. Quelle est la meilleure voie à suivre? Autant que je sache, il y a deux options:
(Pourrait être résumé comme suit: une carte de hachage stockée dans le système de fichiers est-elle plus efficace qu'une table de base de données indexée?)
Deuxième partie de la question. Les nouvelles URL contiennent l'ID de la page invoquée. Quelque chose comme
www.example.com/abc/21-defghi.html
Si à la place j'appelle
www.example.com/21-xxx.html
Je reçois une redirection 301 vers l'URL correcte. Dois-je me donner la peine de générer la nouvelle URL exacte ou puis-je concaténer deux redirections? Cela signifie que vous ne stockez qu'un ID ou la nouvelle URL complète.
La création d'un fichier .htaccess énorme peut avoir un impact important sur les performances de votre système, car il est lu de manière linéaire pour toutes les demandes, au moins jusqu'à ce qu'une règle avec l'attribut L (Last Rule) soit mise en correspondance.
La façon dont j'ai fait quelque chose de similaire (environ 3000 redirections) consiste à mettre une page d'erreur personnalisée dans le fichier .htaccess. De mémoire, la syntaxe ressemble à ceci:
ErrorDocument 404 404.php
Ensuite, dans 404.php, implémentez la logique à l'aide d'une base de données MySQL, en recherchant la nouvelle URL à l'aide de l'URL demandée. S'il est trouvé, redirigez la demande à l'aide de l'en-tête d'emplacement PHP. Sinon, affichez une page d'erreur personnalisée.
Contrairement à la simple émission de la redirection 404 dans le fichier . Htaccess, le fichier 404.php peut garder une trace des demandes et des statistiques sur les redirections renvoyées.