Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.htaccess et FilterProvider #249

Closed
RedoXyde opened this issue Nov 30, 2013 · 8 comments
Closed

.htaccess et FilterProvider #249

RedoXyde opened this issue Nov 30, 2013 · 8 comments
Assignees
Labels
Milestone

Comments

@RedoXyde
Copy link

Bonjour,

J'ai cherché un petit peu, mais je ne crois pas que cette issue soit ouverte...

J'ai pu constater un "bug" avec le htaccess... une erreur 500 sur hébergement SimpleHosting Gandi, aucun problème sur mon serveur personnel.
Cela vient d'un changement de syntaxe sur les FilterProvider entre deux versions d'Apache.
Apache 2.4:
FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} = 'text/html'"

Apache 2.2:
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html

Voilà,
Je comprendrais que tu ne le prennes pas en compte, mais avec l'utilisation du mod_version, il y a moyen d'utiliser les bonnes règles en fonction de la version d'Apache disponible sur le serveur. Cela permettrait une installation et des mises à jour plus accessibles et plus rapides, donc potentiellement une utilisation de Leed par un plus grand nombre de gens, qui à l'heure actuelle passent à côté à cause de ce petit désagrément causé par leur hébergeur...

# HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
  <IfModule version.c>
  <IfModule filter_module.c>
    <IfVersion >= 2.4>
      FilterDeclare   COMPRESS
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'text/html'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'text/css'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'text/plain'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'text/xml'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'text/x-component'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/javascript'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/json'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/xml'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/xhtml+xml'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/rss+xml'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/atom+xml'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/vnd.ms-fontobject'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'image/svg+xml'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'image/x-icon'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'application/x-font-ttf'"
      FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'font/opentype'"
      FilterChain     COMPRESS
      FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
    </IfVersion>
    <IfVersion <= 2.2>
      FilterDeclare   COMPRESS
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/plain
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/xml
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/x-component
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/javascript
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/json
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xml
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xhtml+xml
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/rss+xml
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/atom+xml
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/vnd.ms-fontobject
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/svg+xml
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/x-icon
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/x-font-ttf
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type $font/opentype
      FilterChain     COMPRESS
      FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
    </IfVersion>
  </IfModule>
  </IfModule>

D'après: h5bp/html5-boilerplate#1012

Très beau travail sur Leed en tout cas, Bravo !

@ghost ghost assigned Sbgodin Dec 4, 2013
@Sbgodin
Copy link
Member

Sbgodin commented Dec 4, 2013

Effectivement, je confirme le bug. Je teste le patch.

@Sbgodin
Copy link
Member

Sbgodin commented Dec 4, 2013

Si le module "version", que je n'ai pas trouvé chez moi, n'existe pas, ça veut dire que ces directives ne seront jamais utilisées. Et pour le cas où ce module n'est pas disponible, quel comportement par défaut adopter ?

Je confirme bien que le changement de syntaxe pose problème. Mais je me demande aussi s'il est vraiment nécessaire de garder ces FilterProvider ?

Un sudo a2dismod deflate désactive cette partie et camoufle l'erreur.

@ldleman ?

@RedoXyde
Copy link
Author

RedoXyde commented Dec 4, 2013

Effectivement, je n'avais pas pensé à cette éventualité... D'autant qu'en lisant un peu plus l'autre issue github, on peut voir que ca discute perfs, sans toutefois statuer sur la meilleure option. On peut quand meme lire ça: h5bp/html5-boilerplate#1012 (comment) qui traite du cas "mod_version" absent. Le "fix" de ce post envisage aussi l'absence du mod_deflate mais d’après le comportement après a2dismod deflate, c'est déjà géré par le .htaccess de Leed.

L'utilisation de a2dismod nécessite un accès Shelll au serveur, ce qui n'est pas disponible sur serveurs mutualisés par exemple... Ce n'est donc pas vraiment une solution au problème j'imagine ^^

Avoir ces FilterProvider permet a priori de compresser les types de fichiers cités, donc potentiellement un gain de perf' pour l'utilisateur.

@Sbgodin
Copy link
Member

Sbgodin commented Dec 4, 2013

En fait, si ça ne dépendait que de moi, je dégagerais ce fichier de configuration. La configuration côté serveur regarde ceux qui s'occupent du côté serveur. Le soucis avec ces réglages par défaut, et sans lien direct avec l'application c'est qu'on peut arriver à ce genre de cas où une fonction annexe (compression) provoque des problèmes lourds par rapport aux gains. Et en plus ça ne sert que pour Apache. Je me contenterais d'une simple recommandation dans un fichier dédié à la configuration du serveur...

À l'heure actuelle, l'activation de la compression et une relativement ancienne version d'Apache fait planter le tout. À ma connaissance, pas moyen de faire deux alternatives de façon fiable.

@ldleman, et aux autres, que pensez-vous de récupérer le patch de @RedoXPS et de

  • retirer les IfModule
  • laisser les deux alternatives de configuration
  • commenter ces deux alternatives avec un message d'explication ?

@ldleman
Copy link
Collaborator

ldleman commented Dec 7, 2013

Honnêtement je ne suis pas très a l'aise avec les htaccess, je me suis contenté de prendre celui de html5boilerplate sensé me simplifier la vie de ce coté la (c'est raté visiblement ^^).

Il faut prioriser l'accessibilité à la performance, si nous devons nous priver de 10% de nos utilisateurs uniquement pour utiliser le mod deflate ça n'en vaut pas la peine.

@Sbgodin tu m'a l'air plus "op" que mois la dessus, si tu trouve une solution simple et efficace lance toi :)

@RedoXyde
Copy link
Author

RedoXyde commented Dec 7, 2013

C'est pas vraiment un problème, c'est surtout contrariant de se retrouver face à une erreur 500 suite à un MaJ de Leed... La solution la plus simple pour faciliter l'accessibilité est de simplement retirer ces filtres, et laisser au sysadmin l'entière charge des performances de son serveur.

Si tu veux faciliter l'accès au performances pour les utilisateurs un petit peu avancés (qui ne gèrent pas leur serveur), la solution la plus simple est de commenter les deux configurations possibles, et mettre une ligne dans la doc/le wiki mentionnant la possibilité d'activer cette "option", comme @Sbgodin le suggérait...

Si je peux me permettre de donner mon avis sur la question, il serait dommage "d'entacher" Leed avec des soucis mineurs comme ça, et la solution proposée par @Sbgodin me semble tout à fait correcte.

Bon courage =)

@Sbgodin
Copy link
Member

Sbgodin commented Dec 7, 2013

C'est fait. J'ai vérifié avec le module Apache activé et désactivé.

ldleman added a commit that referenced this issue Dec 14, 2013
@Sbgodin
Copy link
Member

Sbgodin commented Dec 20, 2013

La solution mise en place fonctionne comme prévu.

@Sbgodin Sbgodin closed this as completed Dec 20, 2013
@cobalt74 cobalt74 modified the milestones: Version 1.6, Version 2.0 Feb 20, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants