? boost-546850.patch
Index: boost.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/boost/boost.admin.inc,v
retrieving revision 1.1.2.1.2.3.2.60
diff -u -p -r1.1.2.1.2.3.2.60 boost.admin.inc
--- boost.admin.inc	29 Aug 2009 08:15:36 -0000	1.1.2.1.2.3.2.60
+++ boost.admin.inc	29 Aug 2009 09:47:03 -0000
@@ -487,7 +487,7 @@ function boost_admin_boost_performance_p
   }
 
   // Apache .htaccess settings generation
-  $htaccess = boost_admin_generate_htaccess(variable_get('boost_server_name_http_host', '%{SERVER_NAME}'), variable_get('boost_document_root', '%{DOCUMENT_ROOT}'), 'cache', 'gz');
+  $htaccess = boost_admin_generate_htaccess(variable_get('boost_server_name_http_host', '%{SERVER_NAME}'), variable_get('boost_document_root', '%{DOCUMENT_ROOT}'));
   $form['htaccess'] = array(
     '#type'          => 'fieldset',
     '#title'         => t('Boost Apache .htaccess settings generation'),
@@ -623,30 +623,52 @@ function boost_admin_themes_submit($form
  * @param $html
  *   html document file extension
  */
-function boost_admin_generate_htaccess($server_name = '%{SERVER_NAME}', $document_root = '%{DOCUMENT_ROOT}', $cache_dir = 'cache', $gzip_dir = 'gz') {
+function boost_admin_generate_htaccess($server_name = '%{SERVER_NAME}', $document_root = '%{DOCUMENT_ROOT}') {
   Global $base_path;
   $drupal_subdir = rtrim($base_path, '/');
+
+  // Various dir's
+  $cache_dir = BOOST_ROOT_CACHE_PATH;
+  $gzip_dir = !(BOOST_GZIP_PATH == '') ? '/' . BOOST_GZIP_PATH : '';
+  $normal_dir = !(BOOST_NORMAL_PATH == '') ? '/' . BOOST_NORMAL_PATH : '';
+  $permanent_dir_gzip = !(BOOST_PERM_GZ_PATH == '') ? '/' . BOOST_PERM_GZ_PATH : '';
+  $permanent_dir = !(BOOST_PERM_NORMAL_PATH == '') ? '/' . BOOST_PERM_NORMAL_PATH : '';
+
+  // with a \ slash
   $html = '\\' . BOOST_FILE_EXTENSION;
   $xml = '\\' . BOOST_XML_EXTENSION;
   $css = '\\' . BOOST_CSS_EXTENSION;
   $js = '\\' . BOOST_JS_EXTENSION;
   $json = '\\' . BOOST_JSON_EXTENSION;
-  $gz = '\\.gz';
+  $gz = '\\' . BOOST_GZIP_EXTENSION;
+
+  // no slash
+  $_html = BOOST_FILE_EXTENSION;
+  $_xml = BOOST_XML_EXTENSION;
+  $_css = BOOST_CSS_EXTENSION;
+  $_js = BOOST_JS_EXTENSION;
+  $_json = BOOST_JSON_EXTENSION;
+  $_gz = BOOST_GZIP_EXTENSION;
+
   $char = BOOST_CHAR;
+  $permanant_char = BOOST_PERM_CHAR;
 
   $string = <<<ETO
   ### BOOST START ###
-  <FilesMatch "($html$gz|$html)$">
+  <FilesMatch "($html$gz|$html|$xml$gz|$xml|$json$gz|$json)$">
     <IfModule mod_headers.c>
       Header set Expires "Sun, 19 Nov 1978 05:00:00 GMT"
       Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
     </IfModule>
   </FilesMatch>
   <IfModule mod_mime.c>
-    AddCharset utf-8 .html
-    AddCharset utf-8 .xml
+    AddCharset utf-8 $_html
+    AddCharset utf-8 $_xml
+    AddCharset utf-8 $_css
+    AddCharset utf-8 $_js
+    AddCharset utf-8 $_json
+    AddEncoding gzip $_gz
   </IfModule>
-  AddEncoding x-gzip .gz
   <FilesMatch "$html$gz$">
     ForceType text/html
   </FilesMatch>
@@ -659,20 +681,23 @@ function boost_admin_generate_htaccess($
   <FilesMatch "$js$gz$">
     ForceType text/javascript
   </FilesMatch>
+  <FilesMatch "$json$gz$">
+    ForceType text/javascript
+  </FilesMatch>
 
   # GZIP - Cached css & js files
   RewriteCond %{HTTP:Accept-encoding} !gzip
   RewriteRule .* - [S=2]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char$char$css$gz -s
-  RewriteRule .* $cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char$char$css$gz [L,QSA,T=text/css]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char$char$js$gz -s
-  RewriteRule .* $cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char$char$js$gz [L,QSA,T=text/javascript]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$permanent_dir_gzip/$server_name%{REQUEST_URI}$permanant_char$css$gz -s
+  RewriteRule .* $cache_dir$permanent_dir_gzip/$server_name%{REQUEST_URI}$permanant_char$css$gz [L,QSA,T=text/css]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$permanent_dir_gzip/$server_name%{REQUEST_URI}$permanant_char$js$gz -s
+  RewriteRule .* $cache_dir$permanent_dir_gzip/$server_name%{REQUEST_URI}$permanant_char$js$gz [L,QSA,T=text/javascript]
 
   # NORMAL - Cached css & js files
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$server_name%{REQUEST_URI}$char$char$css -s
-  RewriteRule .* $cache_dir/$server_name%{REQUEST_URI}$char$char$css [L,QSA,T=text/css]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$server_name%{REQUEST_URI}$char$char$js -s
-  RewriteRule .* $cache_dir/$server_name%{REQUEST_URI}$char$char$js [L,QSA,T=text/javascript]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$permanent_dir/$server_name%{REQUEST_URI}$permanant_char$css -s
+  RewriteRule .* $cache_dir$permanent_dir/$server_name%{REQUEST_URI}$permanant_char$css [L,QSA,T=text/css]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$permanent_dir/$server_name%{REQUEST_URI}$permanant_char$js -s
+  RewriteRule .* $cache_dir$permanent_dir/$server_name%{REQUEST_URI}$permanant_char$js [L,QSA,T=text/javascript]
 
   # Caching for anonymous users
   # Skip boost IF not get request OR uri has wrong dir OR cookie is set OR https request
@@ -685,20 +710,20 @@ function boost_admin_generate_htaccess($
   # GZIP
   RewriteCond %{HTTP:Accept-encoding} !gzip
   RewriteRule .* - [S=3]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html$gz -s
-  RewriteRule .* $cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html$gz [L,T=text/html]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml$gz -s
-  RewriteRule .* $cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml$gz [L,T=text/xml]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json$gz -s
-  RewriteRule .* $cache_dir/$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json$gz [L,T=text/javascript]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html$gz -s
+  RewriteRule .* $cache_dir$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html$gz [L,T=text/html]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml$gz -s
+  RewriteRule .* $cache_dir$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml$gz [L,T=text/xml]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json$gz -s
+  RewriteRule .* $cache_dir$gzip_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json$gz [L,T=text/javascript]
 
   # NORMAL
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html -s
-  RewriteRule .* $cache_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html [L,T=text/html]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml -s
-  RewriteRule .* $cache_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml [L,T=text/xml]
-  RewriteCond $document_root$drupal_subdir/$cache_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json -s
-  RewriteRule .* $cache_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json [L,T=text/javascript]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$normal_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html -s
+  RewriteRule .* $cache_dir$normal_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$html [L,T=text/html]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$normal_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml -s
+  RewriteRule .* $cache_dir$normal_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$xml [L,T=text/xml]
+  RewriteCond $document_root$drupal_subdir/$cache_dir$normal_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json -s
+  RewriteRule .* $cache_dir$normal_dir/$server_name%{REQUEST_URI}$char%{QUERY_STRING}$json [L,T=text/javascript]
 
   ### BOOST END ###
 ETO;
Index: boost.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/boost/boost.module,v
retrieving revision 1.3.2.2.2.5.2.112
diff -u -p -r1.3.2.2.2.5.2.112 boost.module
--- boost.module	29 Aug 2009 08:27:59 -0000	1.3.2.2.2.5.2.112
+++ boost.module	29 Aug 2009 09:47:04 -0000
@@ -12,6 +12,10 @@
 define('BOOST_PATH',                 dirname(__FILE__));
 define('BOOST_ENABLED',              variable_get('boost_enabled', CACHE_DISABLED));
 define('BOOST_ROOT_CACHE_PATH',      'cache');
+define('BOOST_NORMAL_PATH',          '');
+define('BOOST_GZIP_PATH',            'gz');
+define('BOOST_PERM_NORMAL_PATH',     '');
+define('BOOST_PERM_GZ_PATH',         'gz');
 define('BOOST_MULTISITE_SINGLE_DB',  variable_get('boost_multisite_single_db', FALSE));
 define('BOOST_FILE_PATH',            BOOST_MULTISITE_SINGLE_DB ? boost_cache_directory(NULL, FALSE) : variable_get('boost_file_path', boost_cache_directory(NULL, FALSE)));
 define('BOOST_FILE_EXTENSION',       variable_get('boost_file_extension', '.html'));
@@ -19,6 +23,7 @@ define('BOOST_XML_EXTENSION',        var
 define('BOOST_JSON_EXTENSION',       variable_get('boost_json_extension', '.js'));
 define('BOOST_CSS_EXTENSION',        variable_get('boost_css_extension', '.css'));
 define('BOOST_JS_EXTENSION',         variable_get('boost_js_extension', '.js'));
+define('BOOST_GZIP_EXTENSION',       variable_get('boost_gzip_extension', '.gz'));
 define('BOOST_MAX_PATH_DEPTH',       10);
 define('BOOST_CACHEABILITY_OPTION',  variable_get('boost_cacheability_option', 0));
 define('BOOST_CACHEABILITY_PAGES',   variable_get('boost_cacheability_pages', ''));
@@ -28,7 +33,7 @@ define('BOOST_POST_UPDATE_COMMAND',  var
 define('BOOST_CRON_LIMIT',           variable_get('boost_cron_limit', 100));
 define('BOOST_ONLY_ASCII_PATH',      variable_get('boost_only_ascii_path', TRUE));
 define('BOOST_GZIP',                 variable_get('page_compression', TRUE));
-define('BOOST_GZIP_FILE_PATH',       str_replace(BOOST_ROOT_CACHE_PATH . '/', BOOST_ROOT_CACHE_PATH . '/gz/', BOOST_FILE_PATH));
+define('BOOST_GZIP_FILE_PATH',       str_replace(BOOST_ROOT_CACHE_PATH . '/', BOOST_ROOT_CACHE_PATH . '/' . BOOST_GZIP_PATH . '/', BOOST_FILE_PATH));
 define('BOOST_CLEAR_CACHE_OFFLINE',  variable_get('boost_clear_cache_offline', TRUE));
 define('BOOST_HALT_ON_ERRORS',       variable_get('boost_halt_on_errors', FALSE));
 define('BOOST_ROOT_FILE',            variable_get('boost_root_file', '.boost'));
@@ -1136,7 +1141,7 @@ function boost_cache_kill($filename) {
     if (file_exists($filename)) {
       @unlink($filename);
     }
-    $gz_filename = str_replace(BOOST_FILE_PATH, BOOST_GZIP_FILE_PATH, $filename) . '.gz';
+    $gz_filename = str_replace(BOOST_FILE_PATH, BOOST_GZIP_FILE_PATH, $filename) . BOOST_GZIP_EXTENSION;
     if (file_exists($gz_filename)) {
       @unlink($gz_filename);
     }
@@ -1239,7 +1244,7 @@ function boost_cache_set($path, $data = 
   if (($filename = boost_file_path($path, TRUE, $extension)) && (BOOST_OVERWRITE_FILE || !file_exists($filename) || boost_db_is_expired($filename))) {
     boost_cache_write($filename, $data);
     if (BOOST_GZIP) {
-      boost_cache_write(str_replace(BOOST_FILE_PATH, BOOST_GZIP_FILE_PATH, $filename) . '.gz', gzencode($data, 9));
+      boost_cache_write(str_replace(BOOST_FILE_PATH, BOOST_GZIP_FILE_PATH, $filename) . BOOST_GZIP_EXTENSION, gzencode($data, 9));
     }
     boost_db_prep($filename, $extension, BOOST_TIME + $expire);
     return TRUE;
@@ -1838,12 +1843,12 @@ function _boost_copy_css_files($css) {
     }
     if (file_exists($css_file . '.css.gz')) {
       $src = $css_file . '.css.gz';
-      $dest = BOOST_GZIP_FILE_PATH . '/' . $css_file . '.css' . BOOST_PERM_CHAR . BOOST_CSS_EXTENSION . '.gz';
+      $dest = BOOST_GZIP_FILE_PATH . '/' . $css_file . '.css' . BOOST_PERM_CHAR . BOOST_CSS_EXTENSION . BOOST_GZIP_EXTENSION;
       _boost_copy_file($src, $dest);
     }
     elseif (BOOST_GZIP && file_exists($css_file . '.css')) {
       $src = $css_file . '.css';
-      $dest = BOOST_GZIP_FILE_PATH . '/' . $css_file . '.css' . BOOST_PERM_CHAR . BOOST_CSS_EXTENSION . '.gz';
+      $dest = BOOST_GZIP_FILE_PATH . '/' . $css_file . '.css' . BOOST_PERM_CHAR . BOOST_CSS_EXTENSION . BOOST_GZIP_EXTENSION;
       _boost_gz_copy_file($src, $dest);
     }
   }
@@ -1878,12 +1883,12 @@ function _boost_copy_js_files($js) {
     }
     if (file_exists($js_file . '.js.gz')) {
       $src = $js_file . '.js.gz';
-      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . '.gz';
+      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . BOOST_GZIP_EXTENSION;
       _boost_copy_file($src, $dest);
     }
     elseif (BOOST_GZIP && file_exists($js_file . '.js')) {
       $src = $js_file . '.js';
-      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . '.gz';
+      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . BOOST_GZIP_EXTENSION;
       _boost_gz_copy_file($src, $dest);
     }
     if (file_exists($js_file . '.jsmin.js')) {
@@ -1893,12 +1898,12 @@ function _boost_copy_js_files($js) {
     }
     if (file_exists($js_file . '.jsmin.js.gz')) {
       $src = $js_file . '.jsmin.js.gz';
-      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.jsmin.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . '.gz';
+      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.jsmin.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . BOOST_GZIP_EXTENSION;
       _boost_copy_file($src, $dest);
     }
     elseif (BOOST_GZIP && file_exists($js_file . '.jsmin.js')) {
       $src = $js_file . '.jsmin.js';
-      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.jsmin.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . '.gz';
+      $dest = BOOST_GZIP_FILE_PATH . '/' . $js_file . '.jsmin.js' . BOOST_PERM_CHAR . BOOST_JS_EXTENSION . BOOST_GZIP_EXTENSION;
       _boost_gz_copy_file($src, $dest);
     }
   }
