Gzip compression not working over HTTPS - apache

I have enabled gzip compression for my website via the following in my .htaccess:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
This works fine and content is compressed for unencrypted connections, however when secure requests are made nothing is compressed. Any ideas?
My server is running Apache/2.2.14

In your Apache configuration for your secure site (ie the bit where it talks about port 443 and SSL) check that you have enabled the use of .htaccess files with an AllowOverride directive.
It's possible your current AllowOverride directive is within a section pertaining only to the configuration of non-secure, port 80 access to your server.

You should probably RTFM deflation should be negotiated automatically by the server and client at the SSL layer, not the HTTP layer.
C

Related

How to disable gzip compression in htaccess for a folder

I am looking to disable the gzip folder for folder xxx. looking in StackOverflow, I have tried this :
SetEnvIf Request_URI ^/xxx(.*) no-gzip dont-vary
But it doesn't work.
I have added in here :
<IfModule mod_deflate.c>
SetEnvIf Request_URI ^/flipbook(.*) no-gzip dont-vary
# enables the filter
SetOutputFilter DEFLATE
# non-textual entities should be already compressed
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
and even outside the mod_deflate module but nothing works.
Could anyone help?
SetEnvIf Request_URI ^/flipbook(.*) no-gzip dont-vary
This looks like it should work - for any URL that starts /flipbook (case-sensitive). Setting the no-gzip environment variable disables the DEFLATE filter of mod_deflate.
However, the (.*) part on the regex is entirely superfluous. And, unless you are specifically using the dont-vary env var in your own directives then this isn't doing anything. I don't think dont-vary is a "special" Apache env var. Apache has force-no-vary, which does what dont-vary is probably intended to do, however, I don't believe you should be disabling the Vary header anyway since mod_deflate applies the filter based on the Accept-Encoding HTTP request header sent from the client, so any intermediary caching proxies should cache based on this header. (Only certain proxies have a problem with this header.)
So, this should be written:
SetEnvIf Request_URI "^/flipbook" no-gzip
Reference:
https://httpd.apache.org/docs/2.4/env.html#special
# enables the filter
SetOutputFilter DEFLATE
This doesn't just "enable the filter", it enables the DEFLATE filter on all responses. This basically renders the AddOutputFilterByType directives that follow superfluous, since you are already setting DEFLATE on everything. Generally, you don't want to set it on everything, which is presumably why you are using the AddOutputFilterByType directives.
So, you probably don't need the SetOutputFilter directive, if you are setting the DEFLATE on specific mime-types. OR, you use SetOutputFilter and remove the AddOutputFilterByType directives, but then you should still disable the filter on images and other already compressed media using the no-gzip env var.
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
You don't need all 3. Your server is setting just one mime-type when sending JavaScript files - which you can see in the HTTP response. You only need that one. (Probably application/javascript.)
Alternative solution
Instead of setting the no-gzip env var to disable mod_default, you could instead use an Apache <If> expression to conditionally set the output filters only when not accessing URLs that start /flipbook.
For example:
<If "%{REQUEST_URI} !~ m#^/flipbook/#">
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/javascript
</If>
You don't really need the <IfModule> wrapper unless you intend to port the same code to multiple servers where mod_deflate might not be enabled (and that is acceptable).

mod_deflate disabled: assets still being gzipped

When I execute:
sudo a2dismod deflate
sudo service apache2 restart
And refresh & inspect the response headers of my site in Chrome Web Tools, my assets (css and js) are still being marked as Content-Encoding : gzip. Y-Slow also confirms that all assets except the actual html document are still compressed.
I have output compression turned off in CodeIgniter's config file:
$config['compress_output'] = FALSE;
For what it's worth... though with the deflate module disabled I don't think it matters much, my /etc/apache2/mods-available/deflate.conf file is the system default:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
AddOutputFilterByType DEFLATE application/rss+xml
</IfModule>
I'm running Ubuntu 12.04. What else could be causing my assets to be compressed?
My .htaccess file is void of deflate commands.
You can try the following.
to disable the gzip for a specified file try this:
SetEnvIfNoCase Request_URI YOUR_FILE_NAME\.php$ no-gzip dont-vary
in you htaccess file. change YOUR_FILE_NAME\.PHP$ to what you need.
and to disable the gzip at all try this:
SetEnv no-gzip dont-vary
in your htaccess file.

PageSpeed Insights not seeing the Gzip compression

I'm trying to speed up my website. Google insights (https://developers.google.com/speed/pagespeed/insights) tells me that a critical problem is to enable GZip compression.
The address of the site is http://user2.net
It's based on codeigniter framework.
I have enabled gzip compression with folowing changes to my .htaccess file:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
<files *.html>
SetOutputFilter DEFLATE
</files>
I have tested the site with this tool:
http://www.gidnetwork.com/tools/gzip-test.php
It says that gzip is enabled.
What am I missing?
Did you try these lines in your .htaccess?
<IfModule mod_deflate.c>
<FilesMatch "\.(html|php|txt|xml|js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
It works for my site.
First, check if gzip is enable in your server. You can use this tool:
http://checkgzipcompression.com/
If it's ok, then, check that the compression is working FOR ALL your files.
If Google Page Speed Test found on single file without GZIP compression from your server, the website with fail the test.
You can use Google Chrome for this:
Inspect your code; in the image you can see there is Content Encoding GZIP for the html file.
Clic on every file and find which doesn't have the GZIP encode; maybe the CSS type o JS type.
When you find it, add the file type to your gzip.conf
This is the simple configuration for gzip.conf
gzip on;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
gzip_proxied any;
gzip_types text/plain text/css text/javascript text/xml application/javascript application/x-javascript application/xml application/xml+rss image/x-icon image/svg+xml image/jpeg image/jpg image/png
gzip_vary on;
Good Luck!
There are three ways to enable gzip compression -
By configuring server settings
For apache -
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
For nginx
gzip on;
gzip_comp_level 2;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_vary on;
And by editing .htaccess as shown above
<IfModule mod_deflate.c>
<FilesMatch "\.(html|php|txt|xml|js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
Source: Enable compression
It's the redirect, it sets 2 headers
first 301 (or 302, didn't check)
second 200 + gzip
For anyone who may be having an "Uncompressed Pages" issue after running a SEMRush site audit, try adding the following to your .htaccess
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html|txt|css|js|php)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_Gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
Always remember to backup your .htaccess file before making any edits, as a simple typing error could cause certain features of your website to fail or even worse - break your entire website.
Reference: https://www.semrush.com/blog/improve-page-load-times-htaccess-file/
Google has addressed this exact same concern in their FAQ as why would you get the errors to compress/gzip your files.
Checkout from Google's Insights:
https://developers.google.com/speed/docs/insights/EnableCompression#FAQ
Earlier they used to have a chome extension but now it has been removed so they point you to https://developers.google.com/speed/pagespeed/insights/ where when you enter any url, they tell which particular files or scripts are still eligible for compression or blocking the page render or both.
Hope this helps.

127.0.0.1/asd does'not work on ubuntu environment

I was working on microsoft environment, but now I moved my website to ubuntu, the problem is, when I try to write a link like this, 127.0.0.1/asd, I get not found error, the thing that makes me crazy is, that URL sometimes work sometimes does not work and It was working great on windows environment, this is the error I get,
Not Found The requested URL /asd was not found on this server.
this is my .htaccess,
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>
RewriteEngine On
RewriteRule ^([//a-zA-Z0-9_-]+)$ tab.php?tab_id=$1 [QSA,L]
Your problem seems to be your rewrite rule - "//" should be "\/" - what does your apache conf file look like, does it have .htaccess enabled for that directory?

Gzip compression to html website through PHP

my website is in html and i want to enable gzip compression, my server has provided gzip compression through PHAR extension.
can you guide me how to do gzip .
I prefer to enable GZIP in the .htaccess, assuming your host allows you to change/add an .htaccess file. If they do, I write about how to enable GZIP:
#Gzip
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
#End Gzip