2010-10-14 3 views
0

Depuis l'ajout de cette .htaccess de base à mon répertoire d'index, chaque chargement de page ralentit par peut-être 20-30 secondes:Y at-il un problème avec ce .htaccess qui ralentirait vraiment une demande de page?

Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^(.+)-(.+) movie.php?id=$1 [NC] 

Y at-il une malformation ou une mauvaise mise en forme regex ici? Je ne vois rien de mal à cela.

Merci!

Comme une mise à jour, seulement ces 2 lignes suffisent pour mettre le ralentissement sur:

Options +FollowSymlinks 
RewriteEngine on 
+2

20 à 30 secondes? –

+0

Utiliser '^ (. +) - (. +)' N'est pas le choix optimal ... mais est-ce vraiment 20-30 secondes? – Gumbo

+0

Oui, la suppression du fichier .htaccess provoque le chargement instantané de la page. – James

Répondre

0

Même si je pense que 20-30 secondes est un peu farfelue, voici quelques préoccupations au sujet de votre regex en cours:

  • Une partie de votre expression régulière n'est pas requise, alors déposez-la. Surtout si cette partie ressemble déjà à beaucoup de retour en arrière (et (.+) fait). Ainsi, vous pouvez réduire la regex à ^(.+)-. Vous identifiez un ID avec (.+). Ce n'est pas l'approche optimale. Mieux vaut utiliser ([^-]+) à la place. Cela mach tout ombles qui n'est pas un - (et c'est ce que vous voulez.)

La Règle résultante est donc:

RewriteRule ^([^-]+)- movie.php?id=$1 [NC] 

Encore mieux (cela permet seulement ID intégrale):

RewriteRule ^([0-9]+)- movie.php?id=$1 [NC] 
+0

Merci, mais cela ne semble pas avoir accéléré. Est-il possible que ce soit un problème de configuration de serveur? – James

+0

Probablement. 20-30 secondes est un moyen de ralentir, même pour votre regex;) – NikiC

+0

Droit, je vais devoir enquêter plus loin alors. Merci pour les conseils regex, je vais les garder à l'esprit et changer mes actuels. – James

0

Il semble que vous exécutiez des requêtes via votre script de film. Alors, combien de temps dure votre script movie.php? Si cela prend 20-30 secondes, eh bien, alors voilà!

+0

La règle redirige juste les pages qui répondent à ces critères à movie.php, qui charge instantanément de toute façon, donc je ne vois pas vraiment le problème? – James

+0

Ce serait un problème si movie.php fonctionnait pendant 30 secondes. Comme ce n'est pas le cas, ce n'est pas le problème. –

0

activer la journalisation de réécriture et la manivelle le niveau vers le haut, voir ce que votre RewriteRule fait:

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog 
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteloglevel 

Si la regex est d'avoir à faire des heures supplémentaires, vous verrez rapidement l'erreur d'Apache journal exploser en taille, en particulier aux plus hauts niveaux de journalisation de réécriture.