Created
October 5, 2021 09:04
-
-
Save leMaur/534a828c59224c98c4ea5c226fa53e3c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<IfModule mod_headers.c> | |
<IfModule mod_rewrite.c> | |
# Turn on the rewrite engine (this is necessary in order for | |
# the `RewriteRule` directives to work). | |
# | |
# https://httpd.apache.org/docs/current/mod/core.html#options | |
RewriteEngine On | |
# Enable the `FollowSymLinks` option if it isn't already. | |
# | |
# https://httpd.apache.org/docs/current/mod/core.html#options | |
Options +FollowSymlinks | |
# If the web host doesn't allow the `FollowSymlinks` option, | |
# it needs to be comment out or removed, and then the following | |
# uncomment, but be aware of the performance impact. | |
# | |
# https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks | |
# Options +SymLinksIfOwnerMatch | |
# Depending on how the server is set up, you may also need to | |
# use the `RewriteOptions` directive to enable some options for | |
# the rewrite engine. | |
# | |
# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions | |
# RewriteBase / | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# 1) Brotli | |
# If `Accept-Encoding` header contains `br` | |
RewriteCond "%{HTTP:Accept-encoding}" "br" | |
# and the request is made over HTTPS. | |
RewriteCond "%{HTTPS}" "on" | |
# The Brotli pre-compressed version of the file exists | |
# (e.g.: `script.js` is requested and `script.js.gz` exists). | |
RewriteCond "%{REQUEST_FILENAME}\.br" "-s" | |
# Then, serve the Brotli pre-compressed version of the file. | |
RewriteRule "^(.*)" "$1\.br" [QSA] | |
# Set the correct media type of the requested file. Otherwise, | |
# it will be served with the br media type since the file has | |
# the `.br` extension. | |
# | |
# Also, set the special purpose environment variables so | |
# that Apache doesn't recompress these files. | |
RewriteRule "\.(ico|cur)\.br$" "-" [T=image/x-icon,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.(md|markdown)\.br$" "-" [T=text/markdown,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.appcache\.br$" "-" [T=text/cache-manifest,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.atom\.br$" "-" [T=application/atom+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.bmp\.br$" "-" [T=image/bmp,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.css\.br$" "-" [T=text/css,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.eot.\.br$" "-" [T=application/vnd.ms-fontobject,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.geojson\.br$" "-" [T=application/vnd.geo+json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.html?\.br$" "-" [T=text/html,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.ics\.br$" "-" [T=text/calendar,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.json\.br$" "-" [T=application/json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.jsonld\.br$" "-" [T=application/ld+json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.m?js\.br$" "-" [T=text/javascript,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.otf\.br$" "-" [T=font/otf,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.rdf\.br$" "-" [T=application/rdf+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.rss\.br$" "-" [T=application/rss+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.svg\.br$" "-" [T=image/svg+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.ttc\.br$" "-" [T=font/collection,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.ttf\.br$" "-" [T=font/ttf,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.txt\.br$" "-" [T=text/plain,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.vc(f|ard)\.br$" "-" [T=text/vcard,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.vtt\.br$" "-" [T=text/vtt,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.webmanifest\.br$" "-" [T=application/manifest+json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.xhtml\.br$" "-" [T=application/xhtml+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.xml\.br$" "-" [T=text/xml,E=no-brotli:1,E=no-gzip:1] | |
# Set the `Content-Encoding` header. | |
<FilesMatch "\.br$"> | |
Header append Content-Encoding br | |
</FilesMatch> | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# 2) Zopfli | |
# If `Accept-Encoding` header contains `gzip` and the | |
# request is made over HTTP. | |
RewriteCond "%{HTTP:Accept-encoding}" "gzip" | |
# The Zopfli pre-compressed version of the file exists | |
# (e.g.: `script.js` is requested and `script.js.gz` exists). | |
RewriteCond "%{REQUEST_FILENAME}\.gz" "-s" | |
# Then serve the Zopfli pre-compressed version of the file. | |
RewriteRule "^(.*)" "$1\.gz" [QSA] | |
# Set the media types of the file, as otherwise, because | |
# the file has the `.gz` extension, it wil be served with | |
# the gzip media type. | |
# | |
# Also, set the special purpose environment variables so | |
# that Apache doesn't recompress these files. | |
RewriteRule "\.(ico|cur)\.gz$" "-" [T=image/x-icon,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.(md|markdown)\.gz$" "-" [T=text/markdown,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.appcache\.gz$" "-" [T=text/cache-manifest,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.atom\.gz$" "-" [T=application/atom+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.bmp\.gz$" "-" [T=image/bmp,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.eot.\.gz$" "-" [T=application/vnd.ms-fontobject,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.geojson\.gz$" "-" [T=application/vnd.geo+json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.html?\.gz$" "-" [T=text/html,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.ics\.gz$" "-" [T=text/calendar,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.json\.gz$" "-" [T=application/json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.jsonld\.gz$" "-" [T=application/ld+json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.m?js\.gz$" "-" [T=text/javascript,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.otf\.gz$" "-" [T=font/otf,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.rdf\.gz$" "-" [T=application/rdf+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.rss\.gz$" "-" [T=application/rss+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.svg\.gz$" "-" [T=image/svg+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.ttc\.gz$" "-" [T=font/collection,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.ttf\.gz$" "-" [T=font/ttf,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.txt\.gz$" "-" [T=text/plain,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.vc(f|ard)\.gz$" "-" [T=text/vcard,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.vtt\.gz$" "-" [T=text/vtt,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.webmanifest\.gz$" "-" [T=application/manifest+json,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.xhtml\.gz$" "-" [T=application/xhtml+xml,E=no-brotli:1,E=no-gzip:1] | |
RewriteRule "\.xml\.gz$" "-" [T=text/xml,E=no-brotli:1,E=no-gzip:1] | |
# Set the `Content-Encoding` header. | |
<FilesMatch "\.gz$"> | |
Header append Content-Encoding gzip | |
</FilesMatch> | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Set the `Vary` header. | |
<FilesMatch "\.(br|gz)$"> | |
Header append Vary Accept-Encoding | |
</FilesMatch> | |
</IfModule> | |
</IfModule> | |
<IfModule mod_deflate.c> | |
# 3) gzip | |
# | |
# [!] For Apache versions below version 2.3.7 you don't need to | |
# enable `mod_filter` and can remove the `<IfModule mod_filter.c>` | |
# and `</IfModule>` lines as `AddOutputFilterByType` is still in | |
# the core directives. | |
# | |
# https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype | |
<IfModule mod_filter.c> | |
AddOutputFilterByType DEFLATE "application/atom+xml" \ | |
"application/json" \ | |
"application/manifest+json" \ | |
"application/rdf+xml" \ | |
"application/rss+xml" \ | |
"application/schema+json" \ | |
"application/vnd.ms-fontobject" \ | |
"application/xhtml+xml" \ | |
"font/collection" \ | |
"font/opentype" \ | |
"font/otf" \ | |
"font/ttf" \ | |
"image/bmp" \ | |
"image/svg+xml" \ | |
"image/x-icon" \ | |
"text/cache-manifest" \ | |
"text/css" \ | |
"text/html" \ | |
"text/javascript" \ | |
"text/plain" \ | |
"text/vtt" \ | |
"text/xml" | |
</IfModule> | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Special case: SVGZ | |
# | |
# If these files type would be served without the | |
# `Content-Enable: gzip` response header, user agents would | |
# not know that they first need to uncompress the response, | |
# and thus, wouldn't be able to understand the content. | |
<IfModule mod_mime.c> | |
AddEncoding gzip svgz | |
</IfModule> | |
</IfModule> | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# increase upload size limit | |
<IfModule mod_php5.c> | |
php_value upload_max_filesize 100M | |
php_value post_max_size 100M | |
</IfModule> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment