2009-09-01 8 views
2

J'ai un projet de migration d'un système hérité vers un nouveau système. Le passage au nouveau système créera de nouveaux ID uniques pour les objets en cours de migration; Cependant, mes utilisateurs et index de recherche auront les URL avec les anciens identifiants. Je voudrais mettre en place une redirection apache ou réécrire pour gérer cela, mais je suis préoccupé par les performances avec ce grand nombre d'objets (je m'attends à avoir 500k ancien ID approximatif à de nouveaux mappages d'ID).Apache Redirects/Rewrite Maximum

Est-ce que quelqu'un a implémenté ceci sur cette échelle? Ou sait si Apache peut supporter cette grosse redirection?

Répondre

1

Pouvez-vous exprimer les réécritures en utilisant un plus petit nombre de règles? Y a-t-il un modèle qui relie les anciennes URL aux nouvelles? Sinon, je serais préoccupé par Apache avec les mappages de réécriture 500K +, ce qui est bien au-delà de sa zone de confort. Pourtant, cela pourrait vous surprendre. Il me semble que vous devez écrire une application basée sur la base de données pour gérer les redirections, avec le mappage lui-même stocké dans la base de données. Cela irait beaucoup mieux.

2

J'ai eu la même question récemment. Comme je n'ai trouvé aucune réponse pratique, nous avons implémenté un htaccess 6 règles dont 3 avaient 200 000 conditions.
Cela signifie un fichier htaccess d'une taille de 150 Mo. C'était en fait bien pour une demi-journée, quand personne n'utilisait ce site Web particulier, même si les temps de chargement des pages étaient dans les secondes. Cependant le jour suivant, tout notre serveur a été martelé, avec des charges bien au-dessus de 400. (La machine est 8 cœurs, 16 Go de RAM, SAS RAID5, donc pas de problème avec les ressources)

Je suggère que vous ayez besoin d'implémenter quelque chose comme ça . Concevez vos règles, elles n'ont donc pas besoin de conditions, et placez-les dans une carte de réécriture dbm. cela a facilement résolu les problèmes de performance pour nous.

http://httpd.apache.org/docs/current/rewrite/rewritemap.html#dbm

1

Je vois c'est un vieux sujet, mais avez-vous tous trouver une solution?

J'ai un cas où les développeurs utilisent htaccess pour rediriger plus de 30 000 URL en utilisant RedirectMatch dans un fichier .htaccess.

Je suis préoccupé par les erreurs de performance et de gestion compte tenu de la taille de ce fichier.

Ce que je recommande est que, puisque tous les anciens urls ont:

/sub/#### 

qu'ils se déplacent cela à la base de données et créer

/sub/index.php 

Redirect toutes les demandes de:

www.domain.com/sub/###

à

www.domain.com/sub/index.php

Puis ont l'index.php envoie la redirection puisque les nouvelles URL et anciens identifiants peuvent être recherchés dans la base de données. De cette façon, seules les requêtes HTTP pour les anciennes URLs touchent des processus de réécriture au lieu de chaque requête HTTP.

Questions connexes