2012-04-03 4 views
4

je trouve la htacess suivante qui permet concaténation à partir de fichiers js spécifiques.htaccess pour combiner des fichiers

<FilesMatch "\.combined\.js$"> 
    Options +Includes 
    AddOutputFilterByType INCLUDES application/javascript application/json 
    SetOutputFilter INCLUDES 
</FilesMatch> 

par exemple À l'intérieur de script.combined.js vous pourriez avoir

< !--#include file="libs/jquery-1.5.0.min.js" --> 
< !--#include file="plugins/jquery.idletimer.js" --> 

et ils seraient inclus dans ce fichier unique.

Je veux savoir comment ces deux lignes - ligne 2 n 3 des fichiers .htaccess combinent.

Aussi ceux-ci ont travaillé sur plusieurs systèmes, mais sur mon Ubuntu 12.04 avec Apache 2.2.22 ils ne fonctionnent pas. Pourquoi?

+4

Je ne pense pas que ce soit une bonne idée d'utiliser .htaccess pour cela. Vous obtiendrez un résultat plus fiable et plus fiable dans le langage de script ** any **. –

Répondre

5

La première ligne permet comprend également connu sous le nom SSI (server-side includes) pour les deux types MIME: application/javascript et application/json

la deuxième ligne SetOutputFilter INCLUDES traite les fichiers pour cOMPREND avant de les outputing mais uniquement pour les fichiers contenus dans le chemin de regex "\.combined\.js$" et ne essentiellement ce que la première est en train de faire, mais il est une sauvegarde

Votre absence d'un drapeau crucial Option. Et c'est Options +Includes pour activer inclut pour commencer. C'est peut-être pourquoi il ne fonctionne pas sur l'autre serveur

J'espère que vous n'incluez pas cet espace après le < et que c'était une faute de frappe car sûrement cela ne fonctionnera pas sur n'importe quelle version d'apache si je ne me trompe pas. Il devrait être sans espaces, comme suit:

<!--#include file="libs/jquery-1.5.0.min.js" --> 
<!--#include file="plugins/jquery.idletimer.js" --> 

Vous devrez également activer le module mod_include dans votre httpd.conf. http://httpd.apache.org/docs/2.2/mod/mod_include.html

LoadModule include_module modules/mod_include.so

Je suis sûr que vous avez obtenu ce code de la .htaccess HTML5 Boilerplate

https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess#L887-L917

+0

Oui je l'ai eu de Boilerplate – aWebDeveloper

+0

et j'ai des Options + Comprend. J'ai mis à jour ma question – aWebDeveloper

+0

@WebDeveloper J'ai mis à jour ma réponse –

0

L'explication réelle est ici:

http://httpd.apache.org/docs/2.2/mod/core.html#addoutputfilterbytype

http://httpd.apache.org/docs/2.2/mod/core.html#setoutputfilter

instructions sur la façon d'utiliser ces deux fonctions sont dans les liens ci-dessus. Fondamentalement, apache applique des filtres avant d'envoyer les résultats au client pour qu'ils soient traités par le navigateur. Ainsi, le résultat semble être d'ajouter les fichiers dans un fichier.

Apache en fait dépréciée que AddOutputFilterByType et ne supporte plus son utilisation après apache 2.1 :(Je pense que c'est la raison de ces fonctions ne pas travailler 2.2.22.

Questions connexes