Помогите нашему проекту

.htaccess - полезные примеры для сайта

.HTACCESS - Полезные примеры для сайта .HTACCESS - Полезные примеры для сайта

В этой статье собраны полезные примеры кода в файле .htaccess для оптимизации сайта и реализации таких задач как блокирование доступа к файлу, защита паролем папки или сайта, бан по IP или сети, редиректы, gzip сжатие, кэширование и т.д и т.п.

.htaccess — файл дополнительной конфигурации веб-сервера Apache, и подобных серверов. Позволяет задавать большое количество параметров для работы веб-сервера в отдельных каталогах или по всему сайту в целом.

Защита паролем папки/сайта

Для этого понадобится два файла, файл .htaccess кладем в папку, которую нужно защитить паролем и прописать в нем код:

AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

В файле, который указан в коде - "/path/to/.htpasswd", прописываем логин/пароль:

testuser:Passwordofuser

Блокируем доступ к файлу через htaccess

Если вам нужно заблокировать доступ к какому-либо файлу, например файл xmlrpc.php, который часто используют для взлома wordpress-сайтов, то пропишите в .htaccess следующий код:

# Protect Files
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

Или вот так, если нужно заблокировать файлы в подпапке:

RedirectMatch 403 ^.*/wp-login.php$

Или вот так:

RewriteRule ^.*/wp-login\.php$ - [F,L]

Имейте в виду, если у вас используется nginx, то правила в htaccess не влияют на статические файлы, которые nginx обрабатывает.

Запрет POST запросов

Запретить POST запросы к URL с wp-login.php:

#Запрет POST запросов к wp-login кроме IP 33.33.33.222
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !^33\.33\.33\.222$
RewriteCond %{REQUEST_URI} ^/wp-login\.php$
RewriteRule .? - [F]

Злоумышленники любят в своих атаках использовать Post запросы.

Можно защититься от спамеров и ботов более хитрым способом: они часто не используют заголовки HTTP_REFERER и HTTP_USER_AGENT, в отличии от обычных браузеров, а значит можно запретить все POST запросы где в HTTP_REFERER не указан ваш сайт или же нет HTTP_USER_AGENT, пишем код в файл htaccess:

# Stop spam attack logins and comments
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
RewriteCond %{HTTP_REFERER} !.*example.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) - [F,L]
</ifModule>

Бан по IP или сети при помощи htaccess

# бан по ip
order allow,deny
deny from 131.254.150.26
deny from 54.172.19.226
deny from 10.0.0.0/24
allow from all

Переадресация для wordpress сайта с http на https

Благодаря этому коду в файле .htaccess я смог настроить на своем wordpress сайте (в режиме мультисайта) переадресацию с http на https:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
#for SSL
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteRule ^(.*) https://it-world24.ru/$1 [L,R=301]

Включение HSTS

Строгая транспортная безопасность HTTP (HSTS) — это механизм политики веб-безопасности, с помощью которого веб-сервер указывает, что он поддерживает подключения только по протоколу HTTPS. Для включения HSTS пропишите в файле .htaccess код:

<IfModule mod_headers.c>
# this domain should only be contacted in HTTPS for the next 12 months
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
</IfModule>

Запрещаем отображать сайт в iframe

Может возникнуть ситуация когда какие-либо сайты начинают отображать контент вашего сайта во frame-блоках, цели могут быть разные: мошенничество, clickjacking, воровство вычислительных ресурсов (чтобы не нагружать свой сервер) или просто воровство контента. Защититься можно от этого при помощи вот такого кода в файле htaccess:

<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

Если эта защита не сработает, значит модуль mod_headers на хостинге не включен.

Редирект стандартной ленты WordPress на Feedburner

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^themes/feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/elims [R=302,NC,L]
</IfModule>

301 redirect в htaccess между страницами

Тут все просто:

Redirect 301 /index.php http://site.ru/
Redirect 301 /folder /folder2/folder3
htaccess и 301 редирект с WWW на без WWW

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.sait\.ru$ [NC]
RewriteRule ^(.*)$ http://sait.ru/$1 [R=301,L]

301 редирект с одного домена на другой

Если сайт изменил свой домен и не хочется потерять вес страниц, то замените содержимое .htaccess (файл находится в корне папки старого домена), на следующее (вместо new-site.ua укажите новый домен):

<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://new-site.ua/$1 [R=301,L]

Увеличиваем количество выделяемой ОЗУ

Бывает можно встретить вот такую ошибку:

Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 72 bytes) in

Она говорит о том, что CMS не хватает выделенной под нее оперативной памяти.

Один из способов увеличения объема выделенной оперативной памяти - через файл .htaccess, пишем в нем:

php_value memory_limit 64M

Если не помогло, значит хостинг запретил изменять php параметры через htaccess

Включаем GZip сжатие

Вот такой код для файла htaccess рекомендует WordPress.org:

<IfModule mod_deflate.c>
# Insert filters
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml

# Drop problematic browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>

Или почти такой же код рекомендует известный сайт gtmetrix.com:

<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

Кэширование статического контента в браузере

Следующий пример для htaccess использует расширение mod_expires и включает кеширование всего контента кроме некоторых форматов файлов:

FileETag MTime Size
ExpiresActive On
ExpiresDefault "access plus 10 years"
<FilesMatch \.(html|xhtml|xml|shtml|phtml|php)$>
ExpiresActive Off
</FilesMatch>

Или наоборот кэшируем лишь определенные форматы:

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>

Вот еще пример кода:

ExpiresActive On
ExpiresDefault A0

# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
ExpiresDefault A604800
</FilesMatch>
# 3 HOUR
<FilesMatch "\.(txt|xml|js|css)$">
ExpiresDefault A10800"
</FilesMatch>

Следующие директивы, как альтернатива предыдущему методу, используют расширение Apache под названием mod_header и регламентируют, как клиент будет хранить файлы в кэше, каждая директива говорит клиенту хранить типы файлов в течении разного интервала времени:

# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 3 HOUR
<FilesMatch "\.(txt|xml|js|css)$">
Header set Cache-Control "max-age=10800"
</FilesMatch>
# NEVER CACHE
<FilesMatch "\.(html|htm|php|cgi|pl)$">
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
</FilesMatch>

Если часть CSS и JS-файлов, изображений создаются динамически, например изображения предпросмотра и ряд стилей могут создаваться при помощи PHP на лету, то выручит вот такой код:

ExpiresActive On
ExpiresByType text/css A315360000

Закрываем индексацию через .htaccess

Например закрываем индексацию изображений:

<FilesMatch "\.(gif|jpe?g|png)$">
Header set X-Robots-Tag "noindex"
</FilesMatch>

Добавление или удаление слэша в конце url

Добавляем слеш в конце url

Если нужно редиректить например с адреса http://it-world24.ru/test на адрес http://it-world24.ru/test/, то используйте следующий код:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Удаляем слеш в конце url

Если нужно редиректить например с адреса http://it-world24.ru/test/ на адрес http://it-world24.ru/test, то используйте следующий код:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

Отключение вывода ошибок php

Если не скрывать вывод ошибок php, то сайт становится подтвержденным уязвимости "Full Path Disclosure", ее суть заключается в том, что благодаря ошибкам можно узнать полный путь к файлам вызывающим эти ошибки, то есть узнать структуру папок на хостинге, чтобы этого не было в htaccess можно отключить вывод php ошибок:

php_flag display_errors off

если же это вызвало ошибку "internal server error", то удалить эту строку и отключить вывод ошибок в файле "php.ini" при помощи строки:

display_errors = 'off'

Или отключите в админке хостинга, например на моем Хостинг Украина это отключается через админку.

7587 комментарии

  • LillieLed
    LillieLed 16.03.2020 03:18 Комментировать

    casino spellen

    casino spelen online

    online casino ideal

  • hvmzerzp
    hvmzerzp 16.03.2020 00:07 Комментировать

    buy cialis 5mg online buy cialis online canada principio ativo cialis diario

  • Floydwhacydtj
    Floydwhacydtj 15.03.2020 09:53 Комментировать

    Датчики давления Метран 55 предназначены для работы в различных отраслях промышленности, системах автоматического контроля, регулирования и управления технологическими процессами и обеспечивают непрерывное преобразование измеряемых величин - давления избыточного, абсолютного, давления-разрежения, гидростатического давления в выходной сигнал.

    датчик избыточного давления метран 55 ди в Коломне

  • bfotgnjc
    bfotgnjc 14.03.2020 22:33 Комментировать

    virkning av cialis cheap cialis online porque o cialis nao funciona

  • bufirmrs
    bufirmrs 14.03.2020 04:43 Комментировать

    does tricare reserve select cover viagra viagra online canadian pharmacy news female viagra

  • Williamjuire
    Williamjuire 13.03.2020 01:14 Комментировать

    Online sports betting ,Online casino slots news at Jackpot Bet Online. All Word favorite Sportsbook, Racebook, and online Casino slots. Jackpot Bet Online - We have got your casino games, Bonuses, fast payouts, sports betting odds online. NFL Football betting, horse race wagering, online casino slots bets and more.


    Top Online casino sites list

    Redbet Casino
    AHTI Casino
    Online Casino King
    Playojo Casino
    LunaCasino
    Casino RedKings
    EUcasino
    FortuneJack Casino
    Diamond Reels Casino
    Prospect Hall Casino
    Foxy Casino
    Betway casino
    Spelautomater Casino
    Casino På Nett

  • cculgpwm
    cculgpwm 12.03.2020 16:50 Комментировать

    buy cheap viagra and cialis where buy cialis cialis buenos aires

  • WalterAtova
    WalterAtova 11.03.2020 13:18 Комментировать

    Hello! cvs pharmacies pharmacie de garde canadian pharcharmy

  • hkgoqafc
    hkgoqafc 11.03.2020 05:53 Комментировать

    generic viagra florida http://canadabuyou.com/# - buy viagra now
    generico del viagra dr. simi order viagra online sale of viagra in uk

  • gfjqtvvb
    gfjqtvvb 10.03.2020 12:38 Комментировать

    comment utiliser cialis 5mg http://usabuyou.com/# - comment utiliser cialis 5mg
    can i take two 5mg cialis tablets

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

Back to top

Помогите нашему проекту