# Enable rewrite engine and route requests to framework RewriteEngine On #RewriteBase /selfoss # rule for ACME RewriteRule .well-known/(.*) - [L] # rule for favicons RewriteRule !data/favicons/(.*)$ - [C] RewriteRule favicons/(.*)$ data/favicons/$1 [L] # rule for thumbnails RewriteRule !data/thumbnails/(.*)$ - [C] RewriteRule thumbnails/(.*)$ data/thumbnails/$1 [L] # rule for front controller RewriteRule !.(js|ico|gif|jpg|png|css|map|asc|txt|svg|xml|webmanifest)$ index.php # rule for files RewriteRule !favicons/ - [C] RewriteRule !thumbnails - [C] RewriteRule !public - [C] RewriteRule !index.php - [C] RewriteRule !user.css - [C] RewriteRule !user.js - [C] RewriteRule (.*) public/$1 [L] # deny requests for config files Require all denied # Disable ETags Header Unset ETag FileETag none # Default expires header if none specified (stay in browser cache for 7 days) ExpiresActive on ExpiresDefault "access plus 1 week" # CSS ExpiresByType text/css "access plus 1 year" # Data interchange ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" # Favicon (cannot be renamed!) ExpiresByType image/x-icon "access plus 1 week" # HTML components (HTCs) ExpiresByType text/x-component "access plus 1 month" # HTML ExpiresByType text/html "access plus 0 seconds" # JavaScript ExpiresByType application/javascript "access plus 1 year" # Media ExpiresByType audio/ogg "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 video/mp4 "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # Web feeds ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType application/rss+xml "access plus 1 hour" # Web fonts ExpiresByType application/font-woff "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType application/x-font-ttf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" # 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