# Enable this line to temporarily disable the Apache rewrite cache. #Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate" # Tell PHP that we are using Apache SetEnv SERVER_TYPE Apache # Tell PHP that the mod_rewrite module is ENABLED. SetEnv HTTP_MOD_REWRITE On RewriteEngine On # Uncomment the next two lines to forward all HTTP to HTTPS #RewriteCond %{HTTPS} !=on #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # Forward all www. to non-www. Remove this rule if you want both available. RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] # Remove trailing slash from any non-directory path (canonicalization) - GET requests only RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Dynamically rewrite base directory (see http://stackoverflow.com/questions/31062479/301-redirect-urls-that-are-also-being-rewritten) RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$ RewriteRule ^.*$ - [E=BASE:%2] # Forward any requested URLs that specifically contain index.php (see http://stackoverflow.com/questions/31062479/301-redirect-urls-that-are-also-being-rewritten) RewriteCond %{THE_REQUEST} /index\.php [NC] RewriteRule ^index\.php(?:/(.*))?$ %{ENV:BASE}$1 [L,R=301,NC,NE] # Send the URI to index.php (Slim routing) RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] # Deny access to any php.ini files Order allow,deny Deny from all # Gzip Compression # Force compression for mangled headers. # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding # Compress all output labeled with one of the following MIME-types # (for Apache versions below 2.3.7, you don't need to enable `mod_filter` # and can remove the `` and `` lines # as `AddOutputFilterByType` is still in the core directives). AddOutputFilterByType DEFLATE application/atom+xml \ application/javascript \ application/json \ application/rss+xml \ application/vnd.ms-fontobject \ application/x-font-ttf \ application/x-web-app-manifest+json \ application/xhtml+xml \ application/xml \ font/opentype \ image/svg+xml \ image/x-icon \ text/css \ text/html \ text/plain \ text/x-component \ text/xml # ---------------------------------------------------------------------- # | Expires headers - enable this if you want browsers to cache content | # ---------------------------------------------------------------------- # Serve resources with far-future expires headers. # # (!) If you don't control versioning with filename-based # cache busting, you should consider lowering the cache times # to something like one week. # # https://httpd.apache.org/docs/current/mod/mod_expires.html # # # ExpiresActive on # ExpiresDefault "access plus 1 month" # # # CSS # # ExpiresByType text/css "access plus 1 hour" # # # # Data interchange # # ExpiresByType application/atom+xml "access plus 1 hour" # ExpiresByType application/rdf+xml "access plus 1 hour" # ExpiresByType application/rss+xml "access plus 1 hour" # # ExpiresByType application/json "access plus 0 seconds" # ExpiresByType application/ld+json "access plus 0 seconds" # ExpiresByType application/schema+json "access plus 0 seconds" # ExpiresByType application/vnd.geo+json "access plus 0 seconds" # ExpiresByType application/xml "access plus 0 seconds" # ExpiresByType text/xml "access plus 0 seconds" # # # # Favicon (cannot be renamed!) and cursor images # # ExpiresByType image/vnd.microsoft.icon "access plus 1 week" # ExpiresByType image/x-icon "access plus 1 week" # # # HTML # # ExpiresByType text/html "access plus 0 seconds" # # # # JavaScript # # ExpiresByType application/javascript "access plus 1 hour" # ExpiresByType application/x-javascript "access plus 1 hour" # ExpiresByType text/javascript "access plus 1 hour" # # # # Manifest files # # ExpiresByType application/manifest+json "access plus 1 week" # ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" # ExpiresByType text/cache-manifest "access plus 0 seconds" # # # # Media files # # ExpiresByType audio/ogg "access plus 1 month" # ExpiresByType image/bmp "access plus 1 month" # ExpiresByType image/gif "access plus 1 month" # ExpiresByType image/jpeg "access plus 1 month" # ExpiresByType image/png "access plus 1 month" # ExpiresByType image/svg+xml "access plus 1 month" # ExpiresByType image/webp "access plus 1 month" # ExpiresByType video/mp4 "access plus 1 month" # ExpiresByType video/ogg "access plus 1 month" # ExpiresByType video/webm "access plus 1 month" # # # # Web fonts # # # Embedded OpenType (EOT) # ExpiresByType application/vnd.ms-fontobject "access plus 1 month" # ExpiresByType font/eot "access plus 1 month" # # # OpenType # ExpiresByType font/opentype "access plus 1 month" # # # TrueType # ExpiresByType application/x-font-ttf "access plus 1 month" # # # Web Open Font Format (WOFF) 1.0 # ExpiresByType application/font-woff "access plus 1 month" # ExpiresByType application/x-font-woff "access plus 1 month" # ExpiresByType font/woff "access plus 1 month" # # # Web Open Font Format (WOFF) 2.0 # ExpiresByType application/font-woff2 "access plus 1 month" # # # # Other # # ExpiresByType text/x-cross-domain-policy "access plus 1 week" # #