1. Home
  2. Tehnisks
  3. Piemēri .htaccess pārrakstīšanas (rewrite) noteikumiem

Piemēri .htaccess pārrakstīšanas (rewrite) noteikumiem

Current post is outdated!

Iespējot direktoriju indeksus

Options +Indexes

Noteiktu IP adrešu bloķēšana

<RequireAll>
    Require all granted
    Require not ip 1.2.3.4
    Require not ip 12.34.56.78
</RequireAll>

Pieprasījumu atļaušana no vienas konkrētas IP adreses

Require ip 1.2.3.4

Konkrēta USER_AGENT bloķēšana (piemēram, slikts bots)

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} BadBot
RewriteRule .* - [F]

Vairāku USER_AGENT bloķēšana

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} BadBot [OR]
RewriteCond %{HTTP_USER_AGENT} EvilScanner [OR]
RewriteCond %{HTTP_USER_AGENT} Fake
RewriteRule .* - [F]

Liegta piekļuve konkrētam failam

<Files "denied.php">
    Order Allow,Deny
    Deny from all
</Files>

Pamata pāradresācija

# Galvenā domēna pāradresācija
Redirect 301 / https://www.example.ee/

# Pāradresācija no saites, kurai beidzies derīgums
Redirect 301 /expired-page https://www.example.ee/new-page

Visu pieprasījumu pāradresēšana uz vienu domēnu

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L]

Domēna bez www pāradresēšana uz domēnu ar www

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.ee$ [NC]
RewriteRule (.*) https://www.example.ee/$1 [NC,R=301,L]

vai:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

Domēna ar www pāradresēšana uz domēnu bez www

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.ee$ [NC]
RewriteRule (.*) https://example.ee/$1 [NC,R=301,L]

vai:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [NC,R=301,L]

Noteiktu resursu (fontu, svg, css un js failu) atļaušana no domēna, kas atšķiras no servera domēna (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.ee"
    </FilesMatch>
</IfModule>

HSTS, Content Security Policy un citas ar drošību saistītas galvenes

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

Pieprasījumu atļaušana tikai no Igaunijas IP adresēm

order deny,allow
deny from all
allow from env=DZSP_IS_ESTONIAN_IP

Piekļuves atļaušana tikai no Eiropas Savienības valstīm

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

Konkrētas valsts bloķēšana, piem., Ķīna (CN)

SetEnvIf MM_COUNTRY_CODE ^(CN) BlockedCountry
Deny from env=BlockedCountry

POST pieprasījumu bloķēšana no valstu saraksta

# Ja IP adreses valsts kods (ISO 3166 formāts) atbilst,
# tad definē vides mainīgo BLOCKED_COUNTRIES
SetEnvIf MM_COUNTRY_CODE ^(CN|HK|KP|KH|IN|VN|ID|PK|NP|BD|MA|NE|KE|EG|ET|SO|IR|IQ|RU|BY|RO|BR|CO|VE)$ BLOCKED_COUNTRIES

# Kad pieprasījuma metodes tips ir POST un
# vides mainīgais BLOCKED_COUNTRIES ir definēts,
# tad bloķē pieprasījumu.
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{ENV:BLOCKED_COUNTRIES} =1
    RewriteRule .* – [F,L]
</IfModule>

Lietotāju pāradresēšana no konkrētas valsts (Somija) uz citu domēnu

SetEnvIf MM_COUNTRY_CODE ^(FI) FINLAND
RewriteCond %{ENV:FINLAND} ^1$
RewriteRule .* http://www.example.fi%{REQUEST_URI} [R=301,L]

Mūsu serveri izmanto GeoLite2 datubāzi, ko izveidojis MaxMind un ko var lejupielādēt vietnē https://www.maxmind.com.

Uzturēšanas režīms – īslaicīgi pāradresēt visus pieprasījumus uz uzturēšanas paziņojuma lapu

# Ja nepieciešams, pievieno noteiktus URL, kuriem vispirms jāiziet cauri pirms RewriteRule 
# Pievieno sava tīkla IP adresi
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.ee/maintenance.html [L]

PHP izpildes atspējošana, lai novērstu drošības problēmas

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>

Pārrakstīšanas (rewrite) starpniekservera izmantošana

Piemēram, rādīt apakšdirektorija example.com/proxy/ saturu galvenajā domēnā example.com

RewriteRule "^proxy/(.*)$" "http://www.example.com/$1" [P,L]

NB! Starpniekservera pieprasījumus var veikt tikai HTTP savienojumiem, un paziņojums par katru pieprasījumu tiks pievienots tīmekļa servera kļūdu žurnālam.

Updated on 28. Jan 2021
Was this article helpful?

Related Articles