# Do not show directory indexes Options -Indexes # Do not use multiviews Options -MultiViews # Do follow symbolic links Options +FollowSymLinks # Options +SymLinksifOwnerMatch # Character encoding: serve text/html or text/plain as UTF-8 AddDefaultCharset UTF-8 # ----------------------------------------------------------------------------------------------- # Protect from XSS with Apache headers # ----------------------------------------------------------------------------------------------- # prevent site from being loaded in an iframe on another site Header always append X-Frame-Options SAMEORIGIN # To prevent cross site scripting (IE8+ proprietary) Header set X-XSS-Protection "1; mode=block" # ----------------------------------------------------------------------------------------------- # Prevent access to various types of files # # Note that some of these rules are duplicated by RewriteRules or other .htaccess files. # ----------------------------------------------------------------------------------------------- # Block access to inc, info, info.json/php, module/php, sh, sql and composer files # ----------------------------------------------------------------------------------------------- Require all denied Order allow,deny # Block bak, conf, dist, ini, log, orig, sh, sql, swo, swp, ~, ... # ----------------------------------------------------------------------------------------------- Require all denied Order allow,deny DirectoryIndex index.php index.html index.htm # ----------------------------------------------------------------------------------------------- # Enable Apache mod_rewrite # ----------------------------------------------------------------------------------------------- RewriteEngine On # Optionally set a rewrite base if rewrites are not working properly on your server. # ----------------------------------------------------------------------------------------------- # In addition, if your site directory starts with a "~" you will most likely have to use this. # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase # For ex.: # RewriteBase / # RewriteBase /p/ # RewriteBase /~user/ # To redirect HTTP requests to HTTPS, uncomment these lines: # ----------------------------------------------------------------------------------------------- # RewriteCond %{HTTPS} !=on # RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # If using load balancer/AWS or behind proxy, use lines below rather lines before: # ----------------------------------------------------------------------------------------------- # RewriteCond %{HTTP:X-Forwarded-Proto} =https # RewriteRule ^ - [env=proto:https] # RewriteCond %{HTTP:X-Forwarded-Proto} =http # RewriteRule ^ - [env=proto:http] # Uncomment one of lines below and adjust to enable Strict-Transport-Security (HSTS): # Header always set Strict-Transport-Security "max-age=31536000;" # Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains" # Header always set Strict-Transport-Security "max-age=31536000; preload" # Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" # ----------------------------------------------------------------------------------------------- # Access Restrictions # ----------------------------------------------------------------------------------------------- # Keep http requests out of specific files and directories # ----------------------------------------------------------------------------------------------- # Prevent all the following rules from blocking images in ui directories RewriteRule (^|/)ui/images/.+\.(jpg|jpeg|png|gif|webp|svg)$ - [L] # Prevent all the following rules from blocking css directory RewriteRule (^|/)ui/css/[^/]+\.css$ - [L] # Prevent all the following rules from blocking js files RewriteRule (^|/)ui/js/.+\.(map|css|js)$ - [L,QSA] # Prevent all the following rules from blocking sensor RewriteRule (^|/)sensor/(|index\.php)$ - [L,QSA] # Prevent all the following rules from blocking installer RewriteRule (^|/)install/(|index\.php)$ - [L,QSA] RewriteRule (^|/)(|index\.php)$ index.php [L,QSA] # Block access to any htaccess files RewriteCond %{REQUEST_URI} (^|/)(\.htaccess|htaccess\..*)$ [NC,OR] # Block access to assets directory RewriteCond %{REQUEST_URI} (^|/)assets($|/.*$) [NC,OR] # Block access to the /app directories RewriteCond %{REQUEST_URI} (^|/)app($|/.*$) [NC,OR] # Block access to the /sensor directories RewriteCond %{REQUEST_URI} (^|/)sensor($|/.*$) [NC,OR] # Block access to the /config directories RewriteCond %{REQUEST_URI} (^|/)config($|/.*$) [NC,OR] # Block access to the /tmp directories RewriteCond %{REQUEST_URI} (^|/)tmp($|/.*$) [NC,OR] # Block access to the /libs directories RewriteCond %{REQUEST_URI} (^|/)libs($|/.*$) [NC,OR] # Block access to the /install directories RewriteCond %{REQUEST_URI} (^|/)install($|/.*$) [NC,OR] # Block access to the /vendor directories RewriteCond %{REQUEST_URI} (^|/)vendor($|/.*$) [NC,OR] # Block access to the /db directories RewriteCond %{REQUEST_URI} (^|/)db($|/.*$) [NC] RewriteRule ^.*$ - [F,L] # Block access throughout to temporary files ending with tilde created by certain editors RewriteCond %{REQUEST_URI} \.(html?|inc|json|lock|module|php|py|rb|sh|sql|tpl|tmpl|twig)~$ [NC,OR] # Block access to markdown and other software documents RewriteCond %{REQUEST_URI} (^|/)(COPYRIGHT|INSTALL|README|CHANGELOG|LICENSE|AUTHORS|CODE_OF_CONDUCT|LEGALNOTICE|RELEASE_NOTES|SECURITY|FILE_ID|htaccess)(|\.txt|\.md|\.textile|\.diz|\.DIZ)$ [NC,OR] # Block access to source code files RewriteCond %{REQUEST_URI} (^|/).+\.(sh|php|txt|yml|conf|ini|log|sql|json|js|md|sh|xml|lock)$ [NC,OR] # Block access to hidden files RewriteCond %{REQUEST_URI} (^|/)\..+$ [NC,OR] # Block access to names of potential backup file extensions within wire or site directories RewriteCond %{REQUEST_URI} (^|/).+\.(bak|old|sql|sw[op]|(bak|php|sql)[./]+.*)[\d.]*$ [NC,OR] # Block access to docker files if any left RewriteCond %{REQUEST_URI} (^|/)(docker|Docker).*[\d.]*$ [NC,OR] # Block archive file types commonly used for backups # ----------------------------------------------------------------------------------------------- # This blocks requests for zip, rar, tar, gz, and tgz files that are sometimes left on servers RewriteCond %{REQUEST_URI} \.(zip|rar|tar|gz|tgz)$ [NC] RewriteRule ^.*$ - [F,L] #RewriteCond %{REQUEST_FILENAME} !-f #RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !(favicon\.ico|robots\.txt) # ----------------------------------------------------------------------------------------------- # Pass control to tirreno if all the above directives allow us to this point. # For regular VirtualHosts (most installs) # ----------------------------------------------------------------------------------------------- RewriteRule .* index.php [L,QSA] RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]