Fixed issue #17175: t3lib_compressor should write .htaccess to set Expires headers...
authorErnesto Baschny <ernst@cron-it.de>
Fri, 21 Jan 2011 15:02:43 +0000 (15:02 +0000)
committerErnesto Baschny <ernst@cron-it.de>
Fri, 21 Jan 2011 15:02:43 +0000 (15:02 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@10212 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_compressor.php
t3lib/config_default.php

index c19e2c1..35cc0a2 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,7 @@
 
 2011-01-21  Ernesto Baschny  <ernst@cron-it.de>
 
+       * Fixed issue #17175: t3lib_compressor should write .htaccess to set Expires headers for .js/.css files (Thanks to Steffen Gebert)
        * Fixed bug #17120: Problem with the integration of third-party trees (Thanks to Stefan Galinksi)
        * Follow-up to issue #11103: Cleanup of _.htaccess and references to misc/advanced.htaccess in config_default
 
index 83dfb77..4dd316f 100644 (file)
@@ -43,6 +43,14 @@ class t3lib_Compressor {
                // default compression level is -1
        protected $gzipCompressionLevel = -1;
 
+       protected $htaccessTemplate = '<FilesMatch "\.(js|css)(\.gzip)?$">
+       <IfModule mod_expires.c>
+               ExpiresActive on
+               ExpiresDefault "access plus 7 days"
+       </IfModule>
+       FileETag MTime Size
+</FilesMatch>';
+
        /**
         * Constructor
         */
@@ -53,6 +61,15 @@ class t3lib_Compressor {
                        t3lib_div::mkdir(PATH_site . $this->targetDirectory);
                }
 
+                       // if enabled, we check whether we should auto-create the .htaccess file
+               if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['generateApacheHtaccess']) {
+                               // check whether .htaccess exists
+                       $htaccessPath = PATH_site . $this->targetDirectory . '.htaccess';
+                       if (!file_exists($htaccessPath)) {
+                               t3lib_div::writeFile($htaccessPath, $this->htaccessTemplate);
+                       }
+               }
+
                        // decide whether we should create gzipped versions or not
                $compressionLevel = $GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['compressionLevel'];
                        // we need zlib for gzencode()
index 85c5f0b..8e5cf76 100644 (file)
@@ -162,6 +162,7 @@ $TYPO3_CONF_VARS = array(
                'syslogErrorReporting' => E_ALL ^ E_NOTICE,     // Integer: Configures which PHP errors should be logged to the configured syslogs (see: [SYS][systemLog]). If set to "0" no PHP errors are logged to the syslog. Default is "E_ALL ^ E_NOTICE" (6135).
                'belogErrorReporting' => E_ALL ^ E_NOTICE,      // Integer: Configures which PHP errors should be logged to the "syslog" table (extension: belog). If set to "0" no PHP errors are logged to the sys_log table. Default is "E_ALL ^ E_NOTICE" (6135).
                'locallangXMLOverride' => array(),                              // For extension/overriding of the arrays in 'locallang' files in frontend and backend. See 'Inside TYPO3' for more information.
+               'generateApacheHtaccess' => 1,                  // Boolean: TYPO3 can create <em>.htaccess</em> files which are used by Apache Webserver. They are useful for access protection or performance improvements. Currently <em>.htaccess</em> files in the following directories are created, if they do not exist: <ul><li>typo3temp/compressor/</li></ul>You want to disable this feature, if you are not running Apache or want to use own rulesets.
        ),
        'EXT' => array (        // Options related to the Extension Management
                'noEdit' => TRUE,                                               // Boolean: If set, the Extension Manager does NOT allow extension files to be edited! (Otherwise both local and global extensions can be edited.)