Disable compression when a compressed sitemap might be delivered FS#2576
Compressing a gzip file again for transport is standards compliant, but some clients assume that the file is only compressed once then and don't remove the outer compression layer. This could disable compression in too many cases theses cases should be rare and shouldn't cause any problems.
This commit is contained in:
parent
64273335d1
commit
65f6e7d681
|
@ -100,13 +100,23 @@ class Sitemapper {
|
|||
global $conf;
|
||||
|
||||
$sitemap = $conf['cachedir'].'/sitemap.xml';
|
||||
if($conf['compression'] === 'bz2' || $conf['compression'] === 'gz'){
|
||||
if (self::sitemapIsCompressed()) {
|
||||
$sitemap .= '.gz';
|
||||
}
|
||||
|
||||
return $sitemap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for checking if the sitemap is compressed
|
||||
*
|
||||
* @return bool If the sitemap file is compressed
|
||||
*/
|
||||
public static function sitemapIsCompressed() {
|
||||
global $conf;
|
||||
return $conf['compression'] === 'bz2' || $conf['compression'] === 'gz';
|
||||
}
|
||||
|
||||
/**
|
||||
* Pings search engines with the sitemap url. Plugins can add or remove
|
||||
* urls to ping using the SITEMAP_PING event.
|
||||
|
|
|
@ -637,7 +637,7 @@ function act_sitemap($act) {
|
|||
}
|
||||
|
||||
$sitemap = Sitemapper::getFilePath();
|
||||
if(strrchr($sitemap, '.') === '.gz'){
|
||||
if (Sitemapper::sitemapIsCompressed()) {
|
||||
$mime = 'application/x-gzip';
|
||||
}else{
|
||||
$mime = 'application/xml; charset=utf-8';
|
||||
|
|
|
@ -129,9 +129,13 @@ if(!defined('DOKU_TPLINC')) define('DOKU_TPLINC',
|
|||
|
||||
// enable gzip compression if supported
|
||||
$conf['gzip_output'] &= (strpos($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip') !== false);
|
||||
global $ACT;
|
||||
if ($conf['gzip_output'] &&
|
||||
!defined('DOKU_DISABLE_GZIP_OUTPUT') &&
|
||||
function_exists('ob_gzhandler')) {
|
||||
function_exists('ob_gzhandler') &&
|
||||
// Disable compression when a compressed sitemap might be delivered
|
||||
// See https://bugs.dokuwiki.org/index.php?do=details&task_id=2576
|
||||
!($ACT == 'sitemap' && Sitemapper::sitemapIsCompressed())) {
|
||||
ob_start('ob_gzhandler');
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue