.htaccess-tiedosto on tehokas työkalu, jonka avulla voit määrittää asetuksia hakemistokohtaisesti Apache-palvelimilla isännöidyille kotisivuille. Tässä artikkelissa tutkimme, kuinka htaccess rewrite säännöt toimivat, ja annamme esimerkkejä.
Hakemistojen sisällön näytön salliminen
Options +Indexes
Tiettyjen IP-osoitteiden estäminen
<RequireAll> Require all granted Require not ip 1.2.3.4 Require not ip 12.34.56.78 </RequireAll>
Kyselyjen salliminen yhdestä tietystä IP-osoitteesta
Require ip 1.2.3.4
Tietyn USER_AGENT:in estäminen (esimerkiksi huonon botin)
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} BadBot RewriteRule .* - [F]
Useiden USER_AGENT:ien estäminen
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} BadBot [OR] RewriteCond %{HTTP_USER_AGENT} EvilScanner [OR] RewriteCond %{HTTP_USER_AGENT} Fake RewriteRule .* - [F]
Tiettyyn tiedostoon pääsyn estäminen
<Files "denied.php"> Order Allow,Deny Deny from all </Files>
Yksinkertainen uudelleenohjaus
# Redirecting the main domain Redirect 301 / https://www.example.fi/ # Redirecting an expired link Redirect 301 /expired-page https://www.example.fi/new-page
Kaikkien kyselyjen uudelleenohjaus yhteen verkkotunnukseen
RewriteEngine on RewriteCond %{HTTP_HOST} !^(?:www\.)?example.fi$ [NC] RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Ilman www-osoitetta verkkotunnuksen uudelleenohjaus verkkotunnukseen, jossa on www
RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.fi$ [NC] RewriteRule (.*) https://www.example.fi/$1 [NC,R=301,L]
tai:
RewriteEngine on RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
Verkkotunnuksen, jossa on www, uudelleenohjaus verkkotunnukseen, jossa ei ole www-osoitetta
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.fi$ [NC] RewriteRule (.*) https://example.fi/$1 [NC,R=301,L]
tai:
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [NC,R=301,L]
Tiettyjen resurssien (fontti, svg, css jne.) salliminen toisesta verkkotunnuksesta kuin palvelimelta. (Cross-Origin Resource Sharing (CORS))
<IfModule mod_headers.c> <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg|font.css|css|js)$"> Header set Access-Control-Allow-Origin "https://www.example.fi" </FilesMatch> </IfModule>
HSTS, Content Security Policy ja muut turvallisuuteen liittyvät otsikot
<IfModule mod_headers.c> Header set Strict-Transport-Security "max-age=31536000;includeSubDomains;preload" env=HTTPS Header set X-Frame-Options "DENY" Header set Content-Security-Policy "default-src https:; script-src https: 'unsafe-inline'; style-src https:'unsafe-inline'" Header set X-XSS-Protection "1; mode=block" Header set X-Content-Type-Options nosniff </IfModule>
Kyselyjen salliminen vain suomalaisista IP-osoitteista
order deny,allow deny from all allow from env=DZSP_IS_Finnish_IP
Pääsyn salliminen vain Euroopan unionin maista
SetEnvIf MM_COUNTRY_CODE ^(AT|BE|BG|CZ|CY|DE|DK|EE|EL|ES|FI|FR|HR|HU|IE|IT|LT|LU|LV|MT|NL|PL|PT|RO|SE|SI|SK) EUROPEANUNION order deny,allow deny from all allow from env=EUROPEANUNION
Tietyn maan estäminen, esim. Kiina (CN)
SetEnvIf MM_COUNTRY_CODE ^(CN) BlockedCountry Deny from env=BlockedCountry
Käyttäjien uudelleenohjaus tietystä maasta (Suomi) toiseen verkkotunnukseen
SetEnvIf MM_COUNTRY_CODE ^(FI) FINLAND RewriteCond %{ENV:FINLAND} ^1$ RewriteRule .* http://www.example.fi%{REQUEST_URI} [R=301,L]
Palvelimemme käyttävät MaxMindin luomaa GeoLite2-tietokantaa, jonka voi ladata osoitteesta www.maxmind.com.
Ylläpitotila – ohjaa kaikki kyselyt tilapäisesti huoltoilmoitussivulle
# If necessary, add certain URLs that must go through first before RewriteRule # Add your network's IP-address RewriteCond %{REQUEST_URI} !/maintenance.html [NC] RewriteCond %{REQUEST_URI} !/maintenance\.css [NC] RewriteCond %{REQUEST_URI} !/maintenance\.jpg [NC] RewriteCond %{REMOTE_ADDR} !90\.100\.100\.100 RewriteRule .* https://example.fi/maintenance.html [L]
PHP:n suorittamisen poistaminen käytöstä tietoturvaongelmien estämiseksi
Options -ExecCGI RemoveType .php .php3 .phtml .inc RemoveHandler .php .php3 .phtml .inc <FilesMatch "\.(?i:php|php3|phtml|inc)$"> Require all denied </FilesMatch> <IfModule mod_php7.c> php_flag engine off </IfModule>
Rewrite proxy käyttö
Esimerkiksi alihakemiston example.com/proxy/ sisällön näyttäminen pääverkkotunnuksessa example.com
RewriteRule "^proxy/(.*)$" "http://www.example.com/$1" [P,L]
HUOM! Välityspalvelinkyselyjä voidaan tehdä vain HTTP-yhteyksille ja jokaisesta kyselystä lisätään ilmoitus verkkopalvelimen virhelokiin.
Lisäksi .htaccess rewrite rules esimerkeille lue myös “301 redirect with .htaccess file“.