## BEGIN EXPIRES CACHING - JCH OPTIMIZE ##
ExpiresActive on
# Your document html
ExpiresByType text/html "access plus 0 seconds"
# Data
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
# Feed
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"
# Favicon (cannot be renamed)
ExpiresByType image/x-icon "access plus 1 week"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType audio/ogg "access plus 1 year"
ExpiresByType video/ogg "access plus 1 year"
ExpiresByType video/mp4 "access plus 1 year"
ExpiresByType video/webm "access plus 1 year"
# HTC files (css3pie)
ExpiresByType text/x-component "access plus 1 year"
# Webfonts
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType font/* "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-truetype "access plus 1 year"
ExpiresByType application/x-font-opentype "access plus 1 year"
ExpiresByType application/font-ttf "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType application/font-sfnt "access plus 1 year"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
Header set Cache-Control "no-cache, max-age=0, must-revalidate"
Header set Cache-Control "public"
Header set Vary: Accept-Encoding
#Some server not properly recognizing WEBPs
Header set Content-Type "image/webp"
ExpiresDefault "access plus 1 year"
#Or font files
Header set Content-Type "font/woff2"
ExpiresDefault "access plus 1 year"
Header set Content-Type "font/woff"
ExpiresDefault "access plus 1 year"
AddOutputFilterByType BROTLI_COMPRESS text/html text/xml text/plain
AddOutputFilterByType BROTLI_COMPRESS application/rss+xml application/xml application/xhtml+xml
AddOutputFilterByType BROTLI_COMPRESS text/css
AddOutputFilterByType BROTLI_COMPRESS text/javascript application/javascript application/x-javascript
AddOutputFilterByType BROTLI_COMPRESS image/x-icon image/svg+xml
AddOutputFilterByType BROTLI_COMPRESS application/rss+xml
AddOutputFilterByType BROTLI_COMPRESS application/font application/font-truetype application/font-ttf
AddOutputFilterByType BROTLI_COMPRESS application/font-otf application/font-opentype
AddOutputFilterByType BROTLI_COMPRESS application/font-woff application/font-woff2
AddOutputFilterByType BROTLI_COMPRESS application/vnd.ms-fontobject
AddOutputFilterByType BROTLI_COMPRESS font/ttf font/otf font/opentype font/woff font/woff2
AddOutputFilterByType DEFLATE text/html text/xml text/plain
AddOutputFilterByType DEFLATE application/rss+xml application/xml application/xhtml+xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
AddOutputFilterByType DEFLATE image/x-icon image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/font application/font-truetype application/font-ttf
AddOutputFilterByType DEFLATE application/font-otf application/font-opentype
AddOutputFilterByType DEFLATE application/font-woff application/font-woff2
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE font/ttf font/otf font/opentype font/woff font/woff2
# Don't compress files with extension .gz or .br
RewriteRule "\.(gz|br)$" "-" [E=no-gzip:1,E=no-brotli:1]
SetEnvIfNoCase Request_URI \.(gz|br)$ no-gzip no-brotli
## END EXPIRES CACHING - JCH OPTIMIZE ##
##
# @package Joomla
# @copyright (C) 2005 Open Source Matters, Inc.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##
##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line 'Options +FollowSymLinks' may cause problems with some server configurations.
# It is required for the use of Apache mod_rewrite, but it may have already been set by
# your server administrator in a way that disallows changing it in this .htaccess file.
# If using it causes your site to produce an error, comment it out (add # to the
# beginning of the line), reload your site in your browser and test your sef urls. If
# they work, then it has been set by your server administrator and you do not need to
# set it here.
##
## MISSING CSS OR JAVASCRIPT ERRORS
#
# If your site looks strange after enabling this file, then your server is probably already
# gzipping css and js files and you should comment out the GZIP section of this file.
##
## OPENLITESPEED
#
# If you are using an OpenLiteSpeed web server then any changes made to this file will
# not take effect until you have restarted the web server.
##
## Can be commented out if causes errors, see notes above.
Options +FollowSymlinks
Options -Indexes
## No directory listings
IndexIgnore *
## Suppress mime type detection in browsers for unknown types
Header always set X-Content-Type-Options "nosniff"
## Protect against certain cross-origin requests. More information can be found here:
## https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP)
## https://web.dev/why-coop-coep/
#
# Header always set Cross-Origin-Resource-Policy "same-origin"
# Header always set Cross-Origin-Embedder-Policy "require-corp"
#
## Disable inline JavaScript when directly opening SVG files or embedding them with the object-tag
Header always set Content-Security-Policy "script-src 'none'"
## These directives are only enabled if the Apache mod_rewrite module is enabled
RewriteEngine On
## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site then comment out the operations listed
# below by adding a # to the beginning of the line.
# This attempts to block the most common type of exploit `attempts` on Joomla!
#
# Block any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block any script that includes a