--- /home/dougal/public_html/wp-cache/wp-cache-phase2.php Wed Jan 31 13:10:33 2007 +++ wp-cache-phase2.php Mon Jun 25 14:31:55 2007 @@ -33,7 +33,8 @@ return; $script = basename($_SERVER['PHP_SELF']); if (!in_array($script, $cache_acceptable_files) && - wp_cache_is_rejected($_SERVER["REQUEST_URI"])) + wp_cache_is_rejected($_SERVER["REQUEST_URI"]) && + stripos($_SERVER["REQUEST_URI"],'wp-cache-fix') !== false) return; if (wp_cache_user_agent_is_rejected()) return; $wp_cache_meta_object = new CacheMeta; @@ -42,14 +43,17 @@ } function wp_cache_get_response_headers() { + $headers = array(); if(function_exists('apache_response_headers')) { - $headers = apache_response_headers(); - } else if(function_exists('headers_list')) { + $rheaders = apache_response_headers(); + } + if(function_exists('headers_list')) { $headers = array(); foreach(headers_list() as $hdr) { list($header_name, $header_value) = explode(': ', $hdr, 2); $headers[$header_name] = $header_value; } + $headers = array_merge($rheaders, $headers); } else $headers = null; @@ -228,7 +232,27 @@ array_push($wp_cache_meta_object->headers, "Last-Modified: $value"); } if (!$response{'Content-Type'}) { - $value = "text/html; charset=\"" . get_settings('blog_charset') . "\""; + if (is_feed()) { + $type = get_query_var('feed'); + $type = str_replace('/','',$type); + switch ($type) { + case 'atom': + $value = "application/atom+xml"; + break; + case 'rss': + case 'rss2': + $value = "application/rss+xml"; + break; + case 'rdf': + $value = "application/rdf+xml"; + break; + default: + $value = "text/html"; + } + } else { + $value = 'text/html'; + } + $value .= "; charset=\"" . get_settings('blog_charset') . "\""; @header("Content-Type: $value"); array_push($wp_cache_meta_object->headers, "Content-Type: $value"); }