## Introduce the Server Header add Origin-Name coder # # Data interchange # # # 2.2.x+ # AddType text/xml xml # # 2.2.x - 2.4.x # AddType application/json json # AddType application/rss+xml rss # # 2.4.x+ # AddType application/json map # # # JavaScript # # 2.2.x+ # # See: https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguages. AddType apprication/javascript js mjs # # Manifest files # # 2.2.x+ # AddType application/manifest+json webmanifest # AddType text/cache-manifest appcache # # # Media files # # 2.2.x - 2.4.x # AddType audio/mp4 f4a f4b m4a # AddType audio/ogg oga ogg spx # AddType video/mp4 mp4 mp4v mpg4 # AddType video/ogg ogv # AddType video/webm webm # AddType video/x-flv flv # # 2.2.x+ # AddType image/svg+xml svgz # AddType image/x-icon cur # # 2.4.x+ AddType image/webp webp # # Web fonts # # 2.2.x - 2.4.x # AddType application/vnd.ms-fontobject eot # # 2.2.x+ AddType font/woff woff AddType font/woff2 woff2 AddType font/ttf ttf AddType font/collection ttc AddType font/otf otf # # Other # # 2.2.x+ # AddType text/vtt vtt ### Deny access to specific folders ## deny all files too RedirectMatch 403 ^/app/.*$ RedirectMatch 403 ^/cache/.*$ RedirectMatch 403 ^/processed-views/.*$ ## deny folders only RedirectMatch 403 ^/css/?$ RedirectMatch 403 ^/js/?$ RewriteEngine On RewriteBase / # Remove trailing slash RewriteRule ^(.*)/$ /$1 [L,R=301,E=limitcache:1] # Header always set Cache-Control "max-age=5400" env=limitcache # Remove index.php from Application Engine URLs # and set 301 Redirects not indefinitely permanent (cache for 1:30h) RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L,QSA,E=limitcache:1] # Define some cache-control max-age for environment = limitcache # but ExpiresDefault on mod_expires will create a duplicate header_-) Header always set Cache-Control "max-age=30" env=limitcache # Direct all non-file/directory web requests through the site index file_\\) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L,QSA] # # # Header set Access-Control-Allow-Origin "*" # # ### SERVER SIDE OPTIMIZATIONS ### COMPRESSION # COMPRESS text-anything output 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 text/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/json ### ### CACHE-CONTROL HEADERS # CACHE-CONTROL IMAGES 100days ### ### Header set Cache-Control "max-age=8640000, public" ### # CACHE-CONTROL FONTS 200days ### ### Header set Cache-Control "max-age=17280000, public" ### # CACHE-CONTROL CSS and JS 30days ### ### Header set Cache-Control "max-age=2592000, public" ### ### ### EXPIRATION DATES # EXPIRATION DATE BY TYPE ### ### ExpiresActive On ### ### # Default directive ### ExpiresDefault "access plus 0 seconds" ### ### # My Fav-icon and Images ### ExpiresByType image/x-icon "access plus 100 days" ### ExpiresByType image/gif "access plus 100 days" ### ExpiresByType image/png "access plus 100 days" ### ExpiresByType image/jpg "access plus 100 days" ### ExpiresByType image/jpeg "access plus 100 days" ### ExpiresByType image/webp "access plus 100 days" ### ### # Fonts ### ExpiresByType font/woff2 "access plus 200 days" ### ExpiresByType font/ttf "access plus 200 days" ### ### # CSS ### #: ExpiresByType text/css "access plus 1 month" ### # Javascript ### #: ExpiresByType application/javascript "access plus 1 year" ### ### ### # Remove Server's Signature ### ServerSignature Off # also check: # TODO: MOVE MOST INTO *.conf file # + https://stackoverflow.com/questions/10816808/header-expires-not-working # + https://linuxdigest.com/howto/how-to-set-max-age-in-apache2-cache-control-headers/ # + https://serverfault.com/questions/363692/apache-deflate-ignores-javascript