1. Home
  2. Техническое
  3. Директивы файла .htaccess

Директивы файла .htaccess

Содержание

Разрешение на отображение содержимого каталога

Options +Indexes

Запрет доступа к сайту с IP-адреса(-сов)

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

Запрет веб-доступа, кроме IP

Require ip 1.2.3.4

Запрет веб-доступа конкретному USER_AGENT (боту)

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

Запрет веб-доступа нескольким USER_AGENT

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

Запрет доступа к конкретному файл

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

Простое перенаправление

# Переадресация главного домена
Redirect 301 / https://www.example.ee/

# Перенаправление просроченной ссылки
Redirect 301 /expired-page https://www.example.ee/new-page

Перенаправление страницы на новый домен

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

Перенаправление сайта с домена без www на домен с www

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

или:

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

Перенаправление сайта с домена с www на домен без www

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

или:

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

Разрешение определенных ресурсов (font, svg, css и т.п файлов) с другого домена, отличного от сервера. (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 и прочие связанные с безопасностью заголовки

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

Разрешение доступа только с IP Эстонии

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

Разрешение доступа с IP адресов Европы

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) EUROLIIT
order deny,allow
deny from all
allow from env=EUROLIIT

Запрет веб-доступа для конкретной страны, например Китай (CN)

SetEnvIf MM_COUNTRY_CODE ^(CN) ЗаблокированнаяСтрана
Deny from env=ЗаблокированнаяСтрана

Перенаправление пользователей конкретной страны (Финляндия) на новый домен

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

На серверах используется база данных GeoLite2, которая создана MaxMind и которую можно скачать по адресу https://www.maxmind.com.

Режим технического обслуживания – временное перенаправление всех запросов на страницу обслуживания

# При необходимости добавить до RewriteRule ссылки, которые должны иметь доступ 
# Добавить IP адрес своего интернет провайдера 
RewriteCond %{REQUEST_URI} !/hooldus.html [NC]
RewriteCond %{REQUEST_URI} !/hooldus\.css [NC]
RewriteCond %{REQUEST_URI} !/hooldus\.jpg [NC]
RewriteCond %{REMOTE_ADDR} !90\.100\.100\.100
RewriteRule .* https://example.ee/maintenancepage.html [L]

Запрет запуска PHP для предупреждения проблем безопасности

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 прокси

Например отображение содержимого подкаталога sinudomeen.ee/proxy/ на домене example.com

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

NB! Запросы прокси могут выполняться только для HTTP-соединений, и для каждого запроса отправляется уведомление в лог ошибок веб-сервера.

Updated on 4. Jun 2023

Was this article helpful?

Related Articles