URLrewriting et plantage serveur

Nouveau WRInaute
Bonjour,
J'ai un serveur qui plante (saturation) depuis que je lui ai installé un url rewriting.

je ne fais pas de renomage simplementje transforme mes adresse :

page1.php?VAR1=x&VAR2=y
et
Page3633.php?VAR5268=v

EN

page1,VAR1,x,VAR2,y,et,commentaire-qui-passe-en-variable.html
et
Page3633,VAR5268,v,et,commentaire-qui-passe-en-variable.html

la formule magique suivante dans le .HTACCESS:


Code:
RewriteRule (.*)(,.+),([^,]+),([^,&]*)([^,]*)\.html $1$2&$3=$4$5\.html [N]
RewriteRule (.*),([^,]+),([^,]*)(.*)\.html $1.php?$2=$3$4 [L]
RewriteRule ^(.*).html $1.php [L]

me les remets au format php.


En test ça marche bien et je ne retrouve pas de code d'erreur du genre File does not exist dans les error_log
mais en production il suffit qu'un ou deux robots "googleboot" ou "voila BETA" arrivent, pour me planter le site sans que j'arrive à savoir d'où ça vient.

Ensuite tout plante jusqu'au reboot du serveur

Je vous precise que je suis attaché à utiliser un rewrite assez générique avec des virgules pour ne pas avoir à reprendre tous me liens qui ont des "-" et des" _" ou encore des "123"

Merci de votre aide
 
WRInaute accro
peut-etre une loupe dans ton code ?

Code:
### EMPECHE LE CODE DE BOUCLER
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^.*$ - [L]


Met un flag dans tes regles pour alleger la recherche

Code:
RewriteRule page(,.+),([^,]+),([^,&]*)([^,]*)\.html page$1&$2=$3$4\.html [N]

et allege tes classes qui sont toute tres gourmandes en ressources:
([^,]+) veut dire tout sauf la virgule alors qu'un ([0-9]+) devrait suffir.
 
Nouveau WRInaute
Merci, je vais essayer ça ce matin et je te dirai le résultat.

Est-ce que je peux abuser de ta patience pour te demander d'être un peu plus didactique :
Question 1
je crois comprendre de ce que tu dis, qu'en resserant mes codes autour de mes carcatères utilisés j'économise de la ressource donc si je mets mes noms de page à réécrires en t^te de code c'est mieux que de partir d'un trop ouvert
Code:
([^,]+)
?
Dans ce cas est-ce que je peux utiliser conjointement les deux codes CàD
d'abord des lignes codes pour des noms de page définit et au cas ou un lien ne serait pas dans le HTACCES utiliser alors la formule générale.
je devrais alors economiser de la ressource, non ?

Questions 2
ayant trois niveau de repertoire, J'ai vu que le HTACCESS du niveau 2 joue pour le niveau trois (c'est à dire qu'il traduit les codes des sous repertoires sans que je remette de htacces dans ces repertoires) Est-ce qu'il vaut mieux alors ne mettre qu'un seul HTACCESS en racine et donner les règles pour les sous repertoires ou vaut-il mieux scinder les rêgle par répertoire quitte à les répeter ?
Quid alors du demarrage
Code:
RewriteEngine On
peut-on le repeter sans risque dans chaque repertoire ?

Question 3
Code:
### EMPECHE LE CODE DE BOUCLER 
RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule ^.*$ - [L]

Peux-tu détailler un peu plus ce que fait cette fonction, elle bloque le code à un certain niveau de répétition Non ?

Merci d'avance
Hugues
 
WRInaute accro

Oui tu as compris
Commence ta regle avec un flag et fait des classes moins gourmandes en ressources.


- Avec l'.htaccesss a la racine, tu veux que ton .htaccess fonctionne pour les fichiers du repertoire /annuaire/ par exemple, il te faut mentionner le chemin dans la regle :
RewriteRule $ /annuaire/index.php [L]
- L'autre methode consiste a mettre directement le fichier .htaccess dans le repertoire, dans ce cas la regle ne contient plus le chemin du rep:
RewriteRule $ /index.php [L]


ce code va forcer la redirection en empechant le moteur de boucler. Sans danger ^^
 
Nouveau WRInaute
Merci pour tes precisions,
Ya un truc que je ne comprends pas dans mes réécritures

je bug sur la routine d'analyse de variable (mon séparateur est la virgule


RewriteRule ^toutes-les-locations(,.+),([^,]+),([^,&]*)([^,]*)\.html toutes-les-locations$1&$2=$3$4\.html
RewriteRule ^toutes-les-locations,([^,]+),([^,]*)(.*)\.html toutes-les-locations.php?$1=$2$3 [L]


me donne bien

http://127.0.0.1/locations-de-vacan...php?DEP=36[color=red]&[/color]et=dans l-Indre
avec

http://127.0.0.1/locations-de-vacances/toutes-les-locations,DEP,36,et,dans l-Indre.html

En revanche il me donne :

http://127.0.0.1/locations-de-vacan...[color=red]36,et,dans l-Indre[/color]&ORDER=1

avec

http://127.0.0.1/locations-de-vacances/toutes-les-locations,DEP,36,et,dans l-Indre,ORDER,1.html
 
Nouveau WRInaute
Eureka,
j'avais oublié le [N] en fin de ligne qui doit servir de repetiteur

Bon il ne me reste plus qu'à alléger mes classes de carcatères
 
Discussions similaires
Haut