3 votes

Comment puis-je stocker mes règles de réécriture dans une base de données ?

Je développe un nouveau site, et j'aimerais stocker mes règles de réécriture dans une base de données, au lieu de les stocker directement dans les fichiers .htaccess.

J'ai un autre site qui utilise Opensef ( http://sourceforge.net/projects/opensef/ ) avec une installation Joomla ! qui fait cela, mais je ne suis même pas sûr de savoir comment cela fonctionne sous le capot.

Comment puis-je stocker ces règles dans une base de données, les rechercher à la demande et rediriger vers l'URL propre si elles sont trouvées ? Est-ce qu'il y a un meilleur moyen de faire cela au lieu de charger un fichier .htaccess (il peut y avoir des milliers d'entrées) ?

Nous vous remercions,

6voto

Aiden Bell Points 19856

Vous pouvez faire en sorte que mod_rewrite génère un fichier carte provenant d'une source externe comme l'exécution d'un fichier PHP ou Python qui peut récupérer les données de la base de données et créer une carte mod_rewrite.

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html (voir en bas à droite)

Par exemple

RewriteMap    quux-map       prg:/path/to/map.quux.pl

Bonne chance

2voto

Eli Points 3654

En supposant que toutes ces pages soient finalement dans Joomla, je pense que l'utilisation de .htaccess ou de mod_rewrite est une erreur.

Je pense qu'il vaut mieux apprendre comment fonctionne Openserf. J'imagine qu'il y a un petit morceau de code qui s'exécute au début de chaque requête, qui interroge la base de données et qui émet une redirection via PHP s'il y a un résultat. Un autre avantage de cette approche est qu'il devrait même être possible de faire en sorte que Joomla réécrive les liens sur ses pages pour qu'ils pointent vers la version propre dès le départ, ce qui éviterait à l'utilisateur une redirection inutile

C'est d'ailleurs ainsi que procède le module Pathauto de Drupal, que j'utilise en permanence sur des sites très volumineux comptant plusieurs milliers de pages.

1voto

Raúl Ferràs Points 1678

Je pense que la meilleure approche pour utiliser les règles stockées dans une base de données est la suivante :

  • Stockez les règles dans votre base de données via le panneau d'administration de votre site.
  • Ensuite, après la mise à jour de la base de données, générez un nouveau fichier .htaccess en utilisant les règles de la base de données à l'aide de votre solution de langage côté serveur.
  • Remplacer l'ancien .htaccess par le nouveau.

Cela permet d'éviter la charge du serveur. Cette solution est similaire à celle d'Aiden Bell.

0voto

Will Hartung Points 57465

Saisir le UrlRewriteFilter et l'utiliser dans Tomcat au lieu d'Apache.

Tomcat est un excellent serveur web et peut faire beaucoup de choses qu'Apache peut faire (comme FastCGI pour PHP), et écrire ce genre de choses pour lui est trivial comparé à écrire ce genre de choses pour Apache.

0voto

Sean McSomething Points 4383

Ce que vous voulez probablement, c'est une règle de réécriture unique pour traiter toutes les requêtes inconnues qui arrivent et les transmettre à un petit script qui s'occupera des recherches et générera des redirections. Vous pouvez même ignorer complètement la règle de réécriture et utiliser la fonction Apache Directive ErrorDocument pour passer des URL inconnues dans le script.

Vous avez été assez avare de détails sur ce qu'est ce "nouveau site", mais vous devriez peut-être envisager de vous construire un Contrôleur frontal pour l'application et qu'il s'occupe de toutes les URL entrantes. De nombreux (la plupart ?) frameworks d'applications web adoptent cette approche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X