2010-05-20 6 views
2

Vaut-il mieux avoir une seule RewriteRule avec un groupe de RegEx ou plusieurs règles avec moins de RegEx pour le serveur à interroger? Y aura-t-il des différences de performance?Qu'est-ce que la meilleure pratique .htaccess RewriteRule?

Heres est un exemple, une seule règle avec presque tous les groupes RegEx comme option:

RewriteRule ^gallery/?([\w]+)?/?([\w]+)?/?([\d]+)?/?([\w]+)/?$ /gallery.php?$1=$2&start=$3&by=$4 [NC] 

Voici quelques-unes des listes de règles qui remplacerait celle ci-dessus:

RewriteRule ^gallery/category/([\w]+)/$ /gallery.php?category=$1& [NC] 
RewriteRule ^gallery/category/([\w]+)/([\d]+)/$ /gallery.php?category=$1&start=$2 [NC] 
RewriteRule ^gallery/category/([\w]+)/([\d]+)/([\w]+)/$ /gallery.php?category=$1&start=$2&by=$3 [NC] 
... 
RewriteRule ^gallery/tag/([\w]+)/$ /gallery.php?category=$1& [NC] 
RewriteRule ^gallery/tag/([\w]+)/([\d]+)/$ /gallery.php?category=$1&start=$2 [NC] 
RewriteRule ^gallery/tag/([\w]+)/([\d]+)/([\w]+)/$ /gallery.php?category=$1&start=$2&by=$3 [NC] 
... 

Je vais être heureux d'entendre vos options ou expériences personnelles.

Répondre

2

Je n'ai pas évalué quoi que ce soit, mais j'imagine qu'une seule règle de réécriture est plus efficace que plusieurs si la fonctionnalité est équivalente. Quoi qu'il en soit, les règles de réécriture (même des centaines) ont rarement un impact significatif sur les performances (j'ai lu un benchmark sur ce sujet il y a quelques années), sauf si elles procèdent par proxy aux chemins de requêtes ou de statistiques. En résumé, je vous conseille d'aller avec ce qui est plus lisible pour vous.

Dans votre exemple spécifique, je considère que l'expression rationnelle simple est beaucoup plus lisible que la duplication. Cependant, ils ne sont pas équivalents - le premier inclut toujours tous les paramètres. Si cela fait une différence (ce qui n'est probablement pas le cas), il peut être préférable de dupliquer.

+0

Merci pour votre contribution, je pense que je vais utiliser la requête unique car il sera plus facile à maintenir, souple et non redondant. – Pablo