# For Cloudflare allow IPs
allow from all
<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType image/jpg "access plus 10 days"
        ExpiresByType image/jpeg "access plus 10 days"
        ExpiresByType image/gif "access plus 10 days"
        ExpiresByType image/png "access plus 10 days"
        ExpiresByType text/css "access plus 1 month"
	ExpiresByType text/javascript "access plus 1 month"
        ExpiresByType application/js "access plus 1 month"
        ExpiresByType application/javascript "access plus 1 month"
        ExpiresByType application/x-javascript "access plus 1 month"
        ExpiresByType application/pdf "access plus 1 month"
        ExpiresByType text/x-javascript "access plus 1 month"
        ExpiresByType application/x-shockwave-flash "access plus 1 month"
        ExpiresByType font/opentype "access plus 1 month"
        ExpiresByType application/x-font-ttf "access plus 1 month"
        ExpiresByType image/x-icon "access plus 1 year"
        ExpiresByType text/html "access plus 600 seconds"
	ExpiresByType image/svg+xml "access plus 600 seconds"
	ExpiresByType application/xhtml+xml "access plus 600 seconds"
        ExpiresDefault "access plus 10 day"
</IfModule>
<IfModule mod_headers.c>
    <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$">
		Header set Access-Control-Allow-Origin "*"
	</FilesMatch>
    Header set Connection keep-alive
    Header unset ETag
    # Set X-XSS-Protection header and X-Frame-Options header and X-Content-Type-Options header for Apache
    Header always set X-XSS-Protection "1; mode=block"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|woff|woff2|svg)$">
            Header set Cache-Control "max-age=290304000, public"
    </FilesMatch>
    <FilesMatch "\.(js|css)$">
            Header set Cache-Control "max-age=2592000, public"
    </FilesMatch>
    <FilesMatch "\.(xml|txt)$">
            Header set Cache-Control "max-age=3600, public, must-revalidate"
    </FilesMatch>
    <FilesMatch "\.(html|htm|php)$">
            Header set Cache-Control "max-age=3600, must-revalidate"
    </FilesMatch>
    <FilesMatch "(\.js\.gz|\.css\.gz)$">
      # Serve correct encoding type.
      Header set Content-Encoding gzip
      # Force proxies to cache gzipped & non-gzipped css/js files separately.
      Header append Vary Accept-Encoding
    </FilesMatch>
    <FilesMatch "(\.js\.br|\.css\.br)$">
      # Serve correct encoding type.
      Header set Content-Encoding br
      # Force proxies to cache gzipped & non-gzipped css/js files separately.
      Header append Vary Accept-Encoding
    </FilesMatch>
    </IfModule>
# BEGIN Compress files
<ifModule mod_deflate.c>
    <ifModule mod_filter.c>
        # Insert filters / compress text, html, javascript, css, xml:
        AddOutputFilterByType DEFLATE text/plain
        AddOutputFilterByType DEFLATE text/html
        AddOutputFilterByType DEFLATE text/xml
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE text/vtt
        AddOutputFilterByType DEFLATE text/x-component
        AddOutputFilterByType DEFLATE application/xml
        AddOutputFilterByType DEFLATE application/xhtml+xml
        AddOutputFilterByType DEFLATE application/rss+xml
        AddOutputFilterByType DEFLATE application/js
        AddOutputFilterByType DEFLATE application/javascript
        AddOutputFilterByType DEFLATE application/x-javascript
        AddOutputFilterByType DEFLATE application/x-httpd-php
        AddOutputFilterByType DEFLATE application/x-httpd-fastphp
        AddOutputFilterByType DEFLATE application/atom+xml
        AddOutputFilterByType DEFLATE application/json
        AddOutputFilterByType DEFLATE application/ld+json
        AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
        AddOutputFilterByType DEFLATE application/x-font-ttf
        AddOutputFilterByType DEFLATE application/x-web-app-manifest+json
        AddOutputFilterByType DEFLATE font/opentype
        AddOutputFilterByType DEFLATE image/svg+xml
        AddOutputFilterByType DEFLATE image/x-icon
        # Exception: Images
        SetEnvIfNoCase REQUEST_URI \.(?:gif|jpg|jpeg|png)$ no-gzip dont-vary
        # Drop problematic browsers
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        <IfModule mod_headers.c>
            # Make sure proxies don't deliver the wrong content
            Header append Vary User-Agent env=!dont-vary
        </ifModule>
    </ifModule>
</ifModule>
<ifModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
    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>
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteOptions inherit
    # For force HTTPS using only
#    RewriteCond %{SERVER_PORT} 80 
#    RewriteRule ^(.*)$ https://www.domain.tld/$1 [L,R=301]
    # Enforce www
    # If you have subdomains, you can add them to 
    # the list using the "|" (OR) regex operator
#    RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
#    RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]
    # Enforce NO www
#    RewriteCond %{HTTP_HOST} ^www [NC]
#    RewriteRule ^(.*)$ http://domain.tld/$1 [L,R=301]
    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ index.php?/$1 [L]
    #Removes access to the application folder by users.
    #Additionally this will allow you to create a Application.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your application folder.
    RewriteCond %{REQUEST_URI} ^cszcms.*
    RewriteRule ^(.*)$ index.php?/$1 [L]
    ###
    # Checks to see if the user is attempting to access a valid file,
    # such as an image or css document, if this isn't true it sends the
    # request to index.php
    RewriteCond $1 !^(index\.php|assets|templates|install|photo|robots\.txt|favicon\.ico)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
    # Disable hotlinking of images
#    RewriteCond %{HTTP_REFERER} !^$
#    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?cszcms.com [NC]
#    RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
    # Serve brotli compressed CSS files if they exist and the client accepts Brotli (br).
    RewriteCond %{HTTP:Accept-encoding} br
    RewriteCond %{REQUEST_FILENAME}\.br -s
    RewriteRule ^(.*)\.css $1\.css\.br [QSA]
    # Serve gzip compressed CSS files if they exist and the client accepts gzip.
    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}\.gz -s
    RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
    # Serve brotli compressed JS files if they exist and the client accepts Brotli (br).
    RewriteCond %{HTTP:Accept-encoding} br
    RewriteCond %{REQUEST_FILENAME}\.br -s
    RewriteRule ^(.*)\.js $1\.js\.br [QSA]
    # Serve gzip compressed JS files if they exist and the client accepts gzip.
    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}\.gz -s
    RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
    # Serve correct content types, and prevent mod_deflate double gzip.
    RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
    RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
    RewriteRule \.css\.br$ - [T=text/css,E=no-gzip:1]
    RewriteRule \.js\.br$ - [T=text/javascript,E=no-gzip:1]
</IfModule>
<IfModule !mod_rewrite.c>
  # If we don't have mod_rewrite installed, all 404's
  # can be sent to index.php, and everything works as normal.
  # Submitted by: ElliotHaughin
    ErrorDocument 404 index.php
</IfModule>