## 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