# Kirby .htaccess # revision 2023-07-22 # rewrite rules # enable awesome urls. i.e.: # http://yourdomain.com/about-us/team RewriteEngine on # make sure to set the RewriteBase correctly # if you are running the site in a subfolder; # otherwise links or the entire site will break. # # If your homepage is http://yourdomain.com/mysite, # set the RewriteBase to: # # RewriteBase /mysite # In some environments it's necessary to # set the RewriteBase to: # # RewriteBase / # block files and folders beginning with a dot, such as .git # except for the .well-known folder, which is used for Let's Encrypt and security.txt RewriteRule (^|/)\.(?!well-known\/) index.php [L] # block all files in the content folder from being accessed directly RewriteRule ^content/(.*) index.php [L] # block all files in the site folder from being accessed directly RewriteRule ^site/(.*) index.php [L] # block direct access to Kirby and the Panel sources RewriteRule ^kirby/(.*) index.php [L] # make site links work RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php [L] # pass the Authorization header to PHP SetEnvIf Authorization "(.+)" HTTP_AUTHORIZATION=$1 # compress text file responses AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/json AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript # set security headers in all responses # serve files as plain text if the actual content type is not known # (hardens against attacks from malicious file uploads) Header set Content-Type "text/plain" "expr=-z %{CONTENT_TYPE}" Header set X-Content-Type-Options "nosniff"