Correction htaccess

Nouveau WRInaute
Bonjour,
En voulant effectuer des redirections 301 sur des Url en erreur 404 je me suis intéressé un peu plus au contenu de mon fichier htaccess. Aucun souci sur l’intégration de redirection 301.

Ma configuration :
Hébergement : OVH -Mutualisé
Version : Prestashop 1.4.6.2

Certain ordre dans mon htaccess m’intrigue et je souhaites disposer d'un htaccess correct, voici le contenu de mon htaccess avec les interrogations.

Code:
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# WARNING: PLEASE DO NOT MODIFY THIS FILE MANUALLY. IF NECESSARY, ADD YOUR SPECIFIC CONFIGURATION WITH THE HTACCESS GENERATOR IN BACK OFFICE
# http://www.prestashop.com - http://www.prestashop.com/forums
Pas de soucis

Code:
SetEnv PHP_VER 5
SetEnv REGISTER_GLOBALS 0
RewriteCond %{HTTP_HOST} ^mondomaine.com$ [NC]
RewriteRule ^(.*) http://www.mondomaine.com /$1 [QSA,L,R=301]
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com $ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|swf|tpl|css)$ http://www.mondomaine.com / [R,NC]

Ici la redirection avec et sans www est présente par :
RewriteCond %{HTTP_HOST} ^mondomaine.com$ [NC]
RewriteRule ^(.*) http://www.mondomaine.com /$1 [QSA,L,R=301]

J'ai également ceci ? Une autre redirection avec et sans www ?
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www. mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www. mondomaine.com $ [NC]
Je reviens également sur ceci :
RewriteRule .*.(jpg|jpeg|gif|png|bmp|swf|tpl|css)$ http://www. mondomaine.com / [R,NC]
Je ne comprend pas vraiment cet ordre, ceci permet de ne pas tenir compte des majuscules si je ne me trompe pas, mais la redirection sur http://www. mondomaine.com me pose soucis et je ne la comprend pas.

En effet je recherche également la source d'un problème assez vieux, concernant l'indexation des images par les moteurs de recherches, l'ensemble des images produits ne s'index pas. Donc dès que je vois la mention "d'images" je me pause la question si cette ordre influe.

Code:
# Bloquage ip spam
Order Allow,Deny
Allow from all
Deny from xx.xx.xxx.xxx
Ici une ip bloqué (pour raison personnel). Les éléments "Order Allow,Deny et Allow from all" sont ils utiles ? Car "Deny from xx.xx.xxx.xxx" est déjà présent ?

Code:
<IfModule mod_rewrite.c>
# URL rewriting module activation
RewriteEngine on
# URL rewriting rules
RewriteRule ^api/?(.*)$ /webservice/dispatcher.php?url=$1 [QSA,L]
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2$3.jpg [L]
RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2.jpg [L]
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$1$2.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^c/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg [L]
RewriteRule ^c/([a-zA-Z-]+)/[a-zA-Z0-9-]+\.jpg$ /img/c/$1.jpg [L]
RewriteRule ^([a-z]{2})/[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$2&isolang=$1 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$2&isolang=$1 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /category.php?id_category=$2&isolang=$1&noredirect=1 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$2&isolang=$1 [QSA,L]
RewriteRule ^([a-z]{2})/content/([0-9]+)\-[a-zA-Z0-9-]* /cms.php?isolang=$1&id_cms=$2 [QSA,L]
RewriteRule ^([a-z]{2})/content/category/([0-9]+)\-[a-zA-Z0-9-]* /cms.php?isolang=$1&id_cms_category=$2 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)__[a-zA-Z0-9-]* /supplier.php?isolang=$1&id_supplier=$2 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)_[a-zA-Z0-9-]* /manufacturer.php?isolang=$1&id_manufacturer=$2 [QSA,L]
RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg [L]
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /category.php?id_category=$1&noredirect=1 [QSA,L]
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$1 [QSA,L]
RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*) /supplier.php?id_supplier=$1 [QSA,L]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*) /manufacturer.php?id_manufacturer=$1 [QSA,L]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms=$1 [QSA,L]
RewriteRule ^content/category/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms_category=$1 [QSA,L]
RewriteRule ^en/page-not-found$ /404.php?isolang=en [QSA,L]
RewriteRule ^en/address$ /address.php?isolang=en [QSA,L]
RewriteRule ^en/addresses$ /addresses.php?isolang=en [QSA,L]
RewriteRule ^en/authentication$ /authentication.php?isolang=en [QSA,L]
RewriteRule ^en/best-sales$ /best-sales.php?isolang=en [QSA,L]
RewriteRule ^en/cart$ /cart.php?isolang=en [QSA,L]
RewriteRule ^en/contact-us$ /contact-form.php?isolang=en [QSA,L]
RewriteRule ^en/discount$ /discount.php?isolang=en [QSA,L]
RewriteRule ^en/guest-tracking$ /guest-tracking.php?isolang=en [QSA,L]
RewriteRule ^en/order-history$ /history.php?isolang=en [QSA,L]
RewriteRule ^en/identity$ /identity.php?isolang=en [QSA,L]
RewriteRule ^en/manufacturers$ /manufacturer.php?isolang=en [QSA,L]
RewriteRule ^en/my-account$ /my-account.php?isolang=en [QSA,L]
RewriteRule ^en/new-products$ /new-products.php?isolang=en [QSA,L]
RewriteRule ^en/order$ /order.php?isolang=en [QSA,L]
RewriteRule ^en/order-follow$ /order-follow.php?isolang=en [QSA,L]
RewriteRule ^en/quick-order$ /order-opc.php?isolang=en [QSA,L]
RewriteRule ^en/order-slip$ /order-slip.php?isolang=en [QSA,L]
RewriteRule ^en/password-recovery$ /password.php?isolang=en [QSA,L]
RewriteRule ^en/prices-drop$ /prices-drop.php?isolang=en [QSA,L]
RewriteRule ^en/search$ /search.php?isolang=en [QSA,L]
RewriteRule ^en/sitemap$ /sitemap.php?isolang=en [QSA,L]
RewriteRule ^en/stores$ /stores.php?isolang=en [QSA,L]
RewriteRule ^en/supplier$ /supplier.php?isolang=en [QSA,L]
RewriteRule ^en$ /en/ [QSA,L]
RewriteRule ^en/([^?&]*)$ /$1?isolang=en [QSA,L]
RewriteRule ^fr/page-non-trouvee$ /404.php?isolang=fr [QSA,L]
RewriteRule ^fr/adresse$ /address.php?isolang=fr [QSA,L]
RewriteRule ^fr/adresses$ /addresses.php?isolang=fr [QSA,L]
RewriteRule ^fr/authentification$ /authentication.php?isolang=fr [QSA,L]
RewriteRule ^fr/meilleures-ventes$ /best-sales.php?isolang=fr [QSA,L]
RewriteRule ^fr/panier$ /cart.php?isolang=fr [QSA,L]
RewriteRule ^fr/contactez-nous$ /contact-form.php?isolang=fr [QSA,L]
RewriteRule ^fr/bons-de-reduction$ /discount.php?isolang=fr [QSA,L]
RewriteRule ^fr/suivi-commande-invite$ /guest-tracking.php?isolang=fr [QSA,L]
RewriteRule ^fr/historique-des-commandes$ /history.php?isolang=fr [QSA,L]
RewriteRule ^fr/identite$ /identity.php?isolang=fr [QSA,L]
RewriteRule ^fr/fabricants$ /manufacturer.php?isolang=fr [QSA,L]
RewriteRule ^fr/mon-compte$ /my-account.php?isolang=fr [QSA,L]
RewriteRule ^fr/nouveaux-produits$ /new-products.php?isolang=fr [QSA,L]
RewriteRule ^fr/commande$ /order.php?isolang=fr [QSA,L]
RewriteRule ^fr/details-de-la-commande$ /order-follow.php?isolang=fr [QSA,L]
RewriteRule ^fr/commande-rapide$ /order-opc.php?isolang=fr [QSA,L]
RewriteRule ^fr/avoirs$ /order-slip.php?isolang=fr [QSA,L]
RewriteRule ^fr/mot-de-passe-oublie$ /password.php?isolang=fr [QSA,L]
RewriteRule ^fr/promotions$ /prices-drop.php?isolang=fr [QSA,L]
RewriteRule ^fr/recherche$ /search.php?isolang=fr [QSA,L]
RewriteRule ^fr/plan-du-site$ /sitemap.php?isolang=fr [QSA,L]
RewriteRule ^fr/magasins$ /stores.php?isolang=fr [QSA,L]
RewriteRule ^fr/fournisseurs$ /supplier.php?isolang=fr [QSA,L]
RewriteRule ^fr$ /fr/ [QSA,L]
RewriteRule ^fr/([^?&]*)$ /$1?isolang=fr [QSA,L]
</IfModule>
Pas de soucis réécriture URL

Code:
# Catch 404 errors
ErrorDocument 404 /404.php
<IfModule mod_expires.c>
                ExpiresActive On
                ExpiresByType image/gif "access plus 1 month"
                ExpiresByType image/jpeg "access plus 1 month"
                ExpiresByType image/png "access plus 1 month"
                ExpiresByType text/css "access plus 1 week"
                ExpiresByType text/javascript "access plus 1 week"
                ExpiresByType application/javascript "access plus 1 week"
                ExpiresByType application/x-javascript "access plus 1 week"
                ExpiresByType image/x-icon "access plus 1 year"
</IfModule>
Pas de soucis gestions des erreurs 404

Code:
FileETag INode MTime Size
<IfModule mod_deflate.c>
                AddOutputFilterByType DEFLATE text/html
                AddOutputFilterByType DEFLATE text/css
                AddOutputFilterByType DEFLATE text/javascript
                AddOutputFilterByType DEFLATE application/javascript
                AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
Inconnu au bataillon ?

Me suggérez vous des modifications de mon htaccess ou comporte t-il des erreurs majeurs ?
Notamment sur l’existence de commande en double et si aucune commande n’interfère avec l’indexation d'image.
 
WRInaute accro
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com $ [NC]
Condition qui dit que si la ressource demandée n'ai pas demandée depuis ton domaine (si le référer n'est pas toi même) ce qui semble indiquer une mesure anti hotlink vu que la condition s'applique a une règle portant sur les ressources :
RewriteRule .*.(jpg|jpeg|gif|png|bmp|swf|tpl|css)$ -http://www.mondomaine.com / [R,NC]
cela peut être la source de la non indexation de tes images.
Normalement tu peux virer les 5 lignes (conditions et règle qui vont ensemble) sans affecter le fonctionnement de façon significative.

Les éléments "Order Allow,Deny et Allow from all" sont ils utiles ? Car "Deny from xx.xx.xxx.xxx" est déjà présent ?
Oui sinon cela ne fonctionnera pas ne touche pas.

Code:
<IfModule mod_expires.c>
                ExpiresActive On
                ExpiresByType image/gif "access plus 1 month"
                ExpiresByType image/jpeg "access plus 1 month"
                ExpiresByType image/png "access plus 1 month"
                ExpiresByType text/css "access plus 1 week"
                ExpiresByType text/javascript "access plus 1 week"
                ExpiresByType application/javascript "access plus 1 week"
                ExpiresByType application/x-javascript "access plus 1 week"
                ExpiresByType image/x-icon "access plus 1 year"
</IfModule>
ça c'est pas une histoire de 404 c'est une histoire d'en-tête pour dire que la ressource (jpg, CSS, ...) peut être mise en cache un mois par le navigateur (c'est utile ça évite de recharger la feuille de stye a chaque page par exemple quand on navigue sur ton site).

Code:
<IfModule mod_deflate.c>
                AddOutputFilterByType DEFLATE text/html
                AddOutputFilterByType DEFLATE text/css
                AddOutputFilterByType DEFLATE text/javascript
                AddOutputFilterByType DEFLATE application/javascript
                AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
Compression des sorties (html, CSS, JS) .... utile permet d'envoyer la page zipée au navigateur (gain de poids donc de temps de transit)
 
Nouveau WRInaute
Merci Zeb pour tes réponses très précise.

Je me suis donc informé sur le hotlink, et visiblement tu as bien raison.

Donc si je comprend bien :
Code:
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com $ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|swf|tpl|css)$ http://www.mondomaine.com / [R,NC]

Cette partie est à supprimé en partie, :wink: , j'ai donc un soucis d'indexation d'image et ce code interdit à un autre site d'accéder à ces images. Dans cette liste il y a
(jpg|jpeg|gif|png|bmp|swf|tpl|css)
, et notamenet les tpl et css qui corresponde au fichier constituant mon site, il me suffit donc de supprimer
jpg|jpeg|gif|png
pour l'indexation de mes images tout en protégeant mon la structure de mon site et des fichiers t
.

Donc réécrire de cette faon sera plus efficace ?

Code:
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com $ [NC]
RewriteRule .*.(tpl|css)$ http://www.mondomaine.com / [R,NC]
 
WRInaute accro
Onice a dit:
Donc réécrire de cette faon sera plus efficace ?

Code:
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com $ [NC]
RewriteRule .*.(tpl|css)$ http://www.mondomaine.com / [R,NC]
A priori oui mais je doute même que ce soit utile, en effet protéger ta feuille de style et tes template (tpl) me semble un zeste abusé car j'ai jamais vu de cas ou cela se justifiais ... qui aurait intérêt a utiliser la feuille de style de ton site ? ou une template ?? surtout qu'a la limite si on en a besoins il suffit de la copier purement et simplement ... Les images ça se comprend car ça évite de les héberger mais les reste :roll:

Note que c'est peut être une des raisons de la non indexation de tes images mais qu'il peut y en avoir d'autres ...
 
Nouveau WRInaute
Pour la protection des fichiers TPL, c'est une recommandation de Prestashop et que l'on rencontre régulièrement également sur le forum officiel.

Donc en effectuant cette modification m'ouvre au risque du hotlinking, concernant mon site et ma thématique après une petite réflexion je doute que ce soit une réelle menace et au cas ou il me suffit d'utiliser une commande de type
Code:
-site:mondomaine.com inurl:mondomaine.com
pour avoir une idée rapide de ce qui peut être utilisé comme image via les moteur de recherche.

Ce qui revient à faire l'hypothèse qu'il faudra un jour ce protéger vis à vis de certaine site trop gourmand.
Une question me vient à l'esprit.

Peut on ajouter une liste de site à exclure et une liste de site de confiance par ce même type de commande ?

Au passage j'ajoute un lien sur un article illustrant le problème du hotlinking pour les images : http://blog.aube-nature.com/protection-hotlink-image/
 
WRInaute accro
Onice a dit:
Pour la protection des fichiers TPL, c'est une recommandation de Prestashop
Connais pas, mais bon si ils le disent ...

Onice a dit:
Peut on ajouter une liste de site à exclure et une liste de site de confiance par ce même type de commande ?
Oui c'est faisable le souci est surtout que si tu commence a jouer avec ça tu peut vite avoir une liste très longue de domaines a exclure ou inclure et du coup ralentir le serveur.

Ce qu'il faut que tu sache d'un fichier htaccess c'est qu'il est interprété a chaque ressource. Donc pour une page avec une feuille de style un javascript et deux photos c'est 5 interprétation du fichier (5 ressources). Dedans chaque règle est évaluée une a une jusqu'a la dernière si c'est pas spécifié. Ces règles sont des regex, savoir un truc très lourd pour le microprocesseur (beaucoup de calcul donc lent). Plus tu charge la mule, plus tu prend des risques de lenteurs (relative car l'homme n'a pas ce qui faut pour le sentir vraiment sauf gros abus).

Le critère vitesse pour les moteurs est important ... même a mon sens très important. Bref plus tu charge moins c'est bon.

Onice a dit:
Au passage j'ajoute un lien sur un article illustrant le problème du hotlinking pour les images : http://blog.aube-nature.com/protection-hotlink-image/
Très bon blog et un bon article de Cedric membre qualifié du forum d'ailleurs.
 
Nouveau WRInaute
Merci Zeb pour la précision.

Donc ajouter une liste d'exclusion est problématique, mais ajouter une liste de domaine autorisé limiter aux 3 ou 4 moteurs de recherche principaux sera elle significative en terme de temps de réponse ?

Et si ce la est négligeable/possible, le code :
Code:
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com $ [NC]

Est a appliqué en 3 ou 4 fois ?
 
WRInaute accro
Onice a dit:
mais ajouter une liste de domaine autorisé limiter aux 3 ou 4 moteurs de recherche principaux sera elle significative en terme de temps de réponse ?
La vrai question est est ce vraiment utile ? je ne comprend pas cette histoire de protéger les fichier tpl ça me semble même farfelu donc difficile de te répondre.
Le hotlink vraiment gênant dans la pratique c'est les photos ... donc si tu restreint ça au fichier tpl tu n'as pas a te soucier des moteurs de recherche eux s'en moquent de ce genre de fichier. Étendu aux images là ça peut être un souci.

Onice a dit:
Code:
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http:// mondomaine.com $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com /.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mondomaine.com $ [NC]
Est a appliqué en 3 ou 4 fois ?
Là il y a 4 évaluations qui sont vraisemblablement mal formée a cause des espaces mais grosso-modo une unique règle du style
RewriteCond %{HTTP_REFERER} !^.*mondomaine.com.*$ devrait suffire a regrouper tous les cas (toutes les urls référentes qui ne contiennent pas mon nom de domaine).
 
WRInaute accro
J'ajoute juste qques trucs (j'avais pas vu la taille du code a l'origine) mais c'est subjectif car lié a ma façon de coder, la partie réécriture :
Code:
<IfModule mod_rewrite.c>
# URL rewriting module activation
.... etc

Est un vrai torchon. Je n'ai pas assez de recul avec prestachop pour juger de la pertinence de la façon dont c'est fait (donc si c'est simplifiable ou pas au niveau htaccess) mais ça reste de toute façon d'une lourdeur innommable. Là tu n'as que la version française et anglaise si tu publiais en 6 langues 8O ce serait l'orgie pour le serveur.

Quelques idées :
Code:
RewriteRule ^fr/page-non-trouvee$ /404.php?isolang=fr [QSA,L]
RewriteRule ^fr/adresse$ /address.php?isolang=fr [QSA,L]
RewriteRule ^fr/adresses$ /addresses.php?isolang=fr [QSA,L]
RewriteRule ^fr/authentification$ /authentication.php?isolang=fr [QSA,L]
Si le but de ces règles est de présenter des urls "francophones" on peut se poser la question sous l'angle SEO . Hors que représente comme poids SEO une url traduite en comparaison d'un serveur qui rame ... :wink: Hors si la politique est de déployer sur des serveurs plus musclés pour encaisser la charge du logiciel là ça va a l'encontre du boutiquier qui imaginera même pas gratter sur ses frais fixe d'hébergement.

?isolang=fr me fait de plus penser que le CMS est basé sur une gestion de paramètre en GET nativement, et que ensuite avec la mode des urls propres on a ajouté une couche htaccess pour ré-écrire. Hors a l'usage c'est pas une bonne pratique. Il est a mon sens plus logique et pratique pour le système de gérer nativement des urls propres donc d'être en mesure d'analyser les requêtes pour en déduire, la langue, le type de ressource, l'action voulue etc ... faut pas faire ça a partir du htaccess et envoyer des paramètres.

Dernier point qui me fait toujours "presque hurler de rire" c'est la balise conditionnelle dans le htaccess "<IfModule mod_rewrite.c>" car franchement si le mode rewrite n'est pas actif sur le serveur apache bah c'est tout le bousin qui ne fonctionne pas bref pourquoi mettre une condition :roll:

autre truc hallucinant dans la gestion des images :
Code:
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$1$2.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg [L]

Ces lignes semblent convertir des urls d'images de produit (dossier cible /img/p/ pour product je suppose) composées de 1 à 9 chiffres plus du texte (-[_a-zA-Z0-9-] le caractère souligné me fait sourire tellement c'est moche dans une url) du genre :
"www.example.com/123456789-un-truc/photo.jpg" en "www.example.com/img/p/1/2/3/4/5/6/7/8/123456789.jpg".
Hors techniquement parlant avoir une hiérarchie de dossier aussi profonde pour des images est une hérésie ... autant dans la gestion d'inode physique sur le disque que vis a vis du potentiel ...

J'ai eu le même souci a gérer sur mon CMS et calcul en main une profondeur de 4 dossier sur base hexadécimal de nomage (0 à 9 plus "abcdef") est déjà ENORME, 3 passerais dans 80% des cas j'en ai donc pris 4 au cas ou ... bref là encore c'est orgiaque au niveau du système.

Mais c'est pas le principal, le principal c'est qu'au niveau conception c'est bidon car si tu veux être souple et efficace ce n'est pas comme ça que tu dois le faire (pas toi mais le système).
En effet tu peux très bien imaginer une ligne unique au niveau du htaccess qui intercepte toutes les urls d'images (donc qui finissent par jpg (imagine si en plus tu met du png sur la boutique tu double la mise gratos :D )) contenant des chiffres et du texte qui redirige sur un script php unique qui lui sera un poil intelligent .

* D'une part ce script pourra se charger des headers, il sera en mesure de tester si le referer est un moteur ou le site voir un site indésirable (gérer le hotlink au passage en envoyant une autre image ou en incluant un watermark).
* En lisant l'url il saura dans quel dossier physique se trouve la ressource (qui sera rangée a un niveau moindre au passage).
* Le script pourra aussi rendre des services comme voir si des fois on veux l'image plein format ou une miniature (ça peut se faire dans l'url).
* On pourra aussi lui associer un système de redirection si les images bougent.

Bref il donnera la souplesse nécessaire sans plomber le htaccess.

Comble du fun le jour ou le système tourne sur un dédié on peut même imaginer faire ça en C ou autre pour gagner encore de la performance.

Bon pour conclure je connais mal prestachop j'ai surtout planché sur sa base de données afin de m'en servir sur mon CMS perso mais ce que ton htaccess me laisse imaginer n'est pas folichon sauf a dire que j'ai loupé un truc et pas bien compris les règles et ce que cela sous entend derrière.
 
Discussions similaires
Haut