1. Home
  2. Tekninen
  3. htaccess rewrite säännöt – esimerkkejä

htaccess rewrite säännöt – esimerkkejä

.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“.

Päivitetty 2. Sep 2024

Oliko tästä artikkelista apua?

Aiheeseen liittyvät artikkelit