Multiples htaccess et RewriteRule avec fichier centralisé à la racine

Nouveau WRInaute
Bonjour,

j'ai un watermark qui fonctionne bien et qui est appelé par htaccess et rewriterule :

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^([^tn].*\.(gif|jpg|png|jpeg))$ watermark.php?image=$1 [NC]

mais je suis obligé de mettre un fichier watermark.php dans chaque répertoire et sous-répertoire (idem pour le htaccess) et j'essaie d'optimiser un peu ...

Je voudrais n'avoir qu'un fichier watermark à la racine mais en essayant
RewriteRule ^([^tn].*\.(gif|jpg|png|jpeg))$ /chemin/watermark.php?image=$1 [NC]
le watermark.php semble bien se lancer mais je n'ai plus l'image.

Voici comment se termine le watermark.php

header("Content-type:image/jpeg");
watermark($_GET['image']);

Est-ce que ce que j'essaie de faire est réalisable svp et su oui ... par avance merci pour le p'tit coup de pouce
 
Nouveau WRInaute
Bon, ça se complique ...
En fait ça fonctionne très bien ! mais pas sur toutes mes images (et jusqu'à présent évidement je testais sur une qui refuse de fonctionner ..)
Le hic c'est qu'une image peut être correctement watermarkée mais pas une autre alors qu'elles seront du même type et extension jpeg, même longeur de nom (32 car + extension + chemin) et même, de même dimension 270px x 270px !

exemple :
934ab6c0633c211c59bd212cde17437c/3433/thumb270x270/14a119e5f614bac904be547d18f59cee.jpg >> NOK
934ab6c0633c211c59bd212cde17437c/3434/thumb270x270/e9eee7ce621393f355a9fed14df33e0b.jpg >> OK

Dans le watermark.php, j'ai fais un petit debug maison (si entrée dans watermark.php, j'écris dans un fichier texte)

$flux_debug = fopen('/chemin/cache/000debug.txt', 'w');
$date=date("Y-m-d H:i:s");
fputs($flux_debug, $date . ' >> DEBUG watermark sur fichier :');
fputs($flux_debug, $original_image);
fwrite($flux_debug,' >> Le fichier est traité');

et bah, sur les images qui refusent d'être watermarkées, effectivement le fichier txt reste vide ... le rewriterule du htaccess semble sans effet sur ces images.

j'ai tenté
RewriteRule ^(.*.(jpg|jpeg|gif|png|bmp))$ watermark.php?image=$1 [NC]
à la place de
RewriteRule ^([^tn].*\.(gif|jpg|png|jpeg))$ watermark.php?image=$1 [NC]

mais idem ... d'ailleurs à quoi servait le [^tn] ? et qu'entends-tu rewrite bas ?
 
Nouveau WRInaute
à la racine j'ai un htaccess avec RewriteBase / mais il est commenté # et un autr htacess donc plus haut dans l'arborescence qui contient les sous-répertoires de mes images à watermarker.
ce qui est dingue, c'est que ça fonctionne pour plein d'images mais pas pour certaines.
même longueur de chemin (249 car), même type, même extension et j'ai vérifié aussi, même droits.
Je me demande si ce ne sont pas certaines protections du htaccess à la racine qui posent problème :

# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode data within the URL
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]

pour rappel :
934ab6c0633c211c59bd212cde17437c/3434/thumb270x270/e9eee7ce621393f355a9fed14df33e0b.jpg >> OK
934ab6c0633c211c59bd212cde17437c/3433/thumb270x270/14a119e5f614bac904be547d18f59cee.jpg >> NOK
934ab6c0633c211c59bd212cde17437c/3887/thumb270x270/2fd7f362faa183bee008f4bda81af664.jpg >> NOK
 
Nouveau WRInaute
Bon,
J'ai trouvé !!!

Dans le htaccess à la racine, c'était

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

dans

# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode data within the URL
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]

est-ce que c'est améliorable, ou est-ce que je commente cette ligne et puis basta ?
 
Discussions similaires
Haut