• Resolved vinceger

    (@vinceger)


    First of all I would like to thank Samboll for his help earlier today.

    I have created a .htaccess for my blog on xxxx.com/vince/ as below and put this in this directory.

    RewriteEngine On
    RewriteBase /vince/
    RewriteRule ^css/(.*\.css) vince/combine.php?type=css&files=$1
    RewriteRule ^javascript/(.*\.js) vince/combine.php?type=javascript&files=$1
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /vince/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /vince/index.php [L]
    </IfModule>
    # END WordPress

    Also in this directory I put the combine.php, see below.

    Strange enough I still get the error “FAILED: Combine static CSS and JS files” when using the webpagetest.

    Am I doing something wrong here ??

    $cache 	  = true;
    	$cachedir = dirname(__FILE__) . 'vince/cache';
    	$cssdir   = dirname(__FILE__) . 'vince/css';
    	$jsdir    = dirname(__FILE__) . 'vince/javascript';
    
    	// Determine the directory and type we should use
    	switch ($_GET['type']) {
    		case 'css':
    			$base = realpath($cssdir);
    			break;
    		case 'javascript':
    			$base = realpath($jsdir);
    			break;
    		default:
    			header ("HTTP/1.0 503 Not Implemented");
    			exit;
    	};
    
    	$type = $_GET['type'];
    	$elements = explode(',', $_GET['files']);
    
    	// Determine last modification date of the files
    	$lastmodified = 0;
    	while (list(,$element) = each($elements)) {
    		$path = realpath($base . '/' . $element);
    
    		if (($type == 'javascript' && substr($path, -3) != '.js') ||
    			($type == 'css' && substr($path, -4) != '.css')) {
    			header ("HTTP/1.0 403 Forbidden");
    			exit;
    		}
    
    		if (substr($path, 0, strlen($base)) != $base || !file_exists($path)) {
    			header ("HTTP/1.0 404 Not Found");
    			exit;
    		}
    
    		$lastmodified = max($lastmodified, filemtime($path));
    	}
    
    	// Send Etag hash
    	$hash = $lastmodified . '-' . md5($_GET['files']);
    	header ("Etag: \"" . $hash . "\"");
    
    	if (isset($_SERVER['HTTP_IF_NONE_MATCH']) &&
    		stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) == '"' . $hash . '"')
    	{
    		// Return visit and no modifications, so do not send anything
    		header ("HTTP/1.0 304 Not Modified");
    		header ('Content-Length: 0');
    	}
    	else
    	{
    		// First time visit or files were modified
    		if ($cache)
    		{
    			// Determine supported compression method
    			$gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip');
    			$deflate = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate');
    
    			// Determine used compression method
    			$encoding = $gzip ? 'gzip' : ($deflate ? 'deflate' : 'none');
    
    			// Check for buggy versions of Internet Explorer
    			if (!strstr($_SERVER['HTTP_USER_AGENT'], 'Opera') &&
    				preg_match('/^Mozilla\/4\.0 \(compatible; MSIE ([0-9]\.[0-9])/i', $_SERVER['HTTP_USER_AGENT'], $matches)) {
    				$version = floatval($matches[1]);
    
    				if ($version < 6)
    					$encoding = 'none';
    
    				if ($version == 6 && !strstr($_SERVER['HTTP_USER_AGENT'], 'EV1'))
    					$encoding = 'none';
    			}
    
    			// Try the cache first to see if the combined files were already generated
    			$cachefile = 'cache-' . $hash . '.' . $type . ($encoding != 'none' ? '.' . $encoding : '');
    
    			if (file_exists($cachedir . '/' . $cachefile)) {
    				if ($fp = fopen($cachedir . '/' . $cachefile, 'rb')) {
    
    					if ($encoding != 'none') {
    						header ("Content-Encoding: " . $encoding);
    					}
    
    					header ("Content-Type: text/" . $type);
    					header ("Content-Length: " . filesize($cachedir . '/' . $cachefile));
    
    					fpassthru($fp);
    					fclose($fp);
    					exit;
    				}
    			}
    		}
    
    		// Get contents of the files
    		$contents = '';
    		reset($elements);
    		while (list(,$element) = each($elements)) {
    			$path = realpath($base . '/' . $element);
    			$contents .= "\n\n" . file_get_contents($path);
    		}
    
    		// Send Content-Type
    		header ("Content-Type: text/" . $type);
    
    		if (isset($encoding) && $encoding != 'none')
    		{
    			// Send compressed contents
    			$contents = gzencode($contents, 9, $gzip ? FORCE_GZIP : FORCE_DEFLATE);
    			header ("Content-Encoding: " . $encoding);
    			header ('Content-Length: ' . strlen($contents));
    			echo $contents;
    		}
    		else
    		{
    			// Send regular contents
    			header ('Content-Length: ' . strlen($contents));
    			echo $contents;
    		}
    
    		// Store cache
    		if ($cache) {
    			if ($fp = fopen($cachedir . '/' . $cachefile, 'wb')) {
    				fwrite($fp, $contents);
    				fclose($fp);
    			}
    		}
    	}
Viewing 2 replies - 1 through 2 (of 2 total)
  • hmm..the only real thing I see wrong is you have this

    RewriteRule ^css/(.*\.css) vince/combine.php?type=css&files=$1
    RewriteRule ^javascript/(.*\.js) vince/combine.php?type=javascript&files=$1

    should it be this?

    RewriteRule ^css/(.*\.css) /vince/combine.php?type=css&files=$1
    RewriteRule ^javascript/(.*\.js) /vince/combine.php?type=javascript&files=$1

    Thread Starter vinceger

    (@vinceger)

    You’re the mann!

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘.htaccess (again)’ is closed to new replies.