Архив рубрики: Software

WordPress: Запретить доступ к изображениям для внешних сайтов

Инструкция для хостинга nic.ru (RU Center). Часть инструкции на их сайте.

Все действия вы совершаете на свой страх и риск. Неверная конфигурация файла настроек может привести к неработоспособности сервера. Поэтому сделайте бэкап перед изменением!

 

1. Для начала нужно перевести веб-сервер в ручной режим настройки:
Панель управленияУправление серверомРежим настройкиАвтоматический режим настройкиВЫКЛ
2. Подключаемся к серверу по ssh и редактируем файл конфигурации Apache (нужно добавить правило):

~/etc/httpd/php80/dentnt.trmw.ru.conf
    <Directory /home/h909215653/dentnt.trmw.ru/docs/wp-content/uploads>
        AllowOverride All
    </Directory>
Здесь у меня php80, т.к. в данный момент на хостинге активен именно php 8.0, если у вас версия 7.2, то выбираете конфигурационный файл из другой папки, например ~/etc/httpd/php72/.

 

Т.к. данная директива отключает nginx, то вся нагрузка ложится на плечи Apache, что может привести к значительному потреблению ресурсов. Из-за этого не рекомендуется отключать nginx для корневой папки, а нужно ограничиться конкретным каталогом (в нашем случае это папка uploads).

3. Чтобы применить изменения, нажимаем кнопку Перезагрузить в разделе из п.1.
4. Отключаем nginx, чтобы запустить обработку правил Apache, для этого в папке Uploads вашего сайта WordPress создаём файл .htaccess:

docs/wp-content/uploads/.htaccess
# verify presence of mod rewrite
<IfModule mod_rewrite.c>
RewriteEngine on
# Disable nginx
Allow from all
# allow all requests from your domain
RewriteCond %{HTTP_REFERER} !^https://dentnt\.trmw\.ru/ [NC]
# search engine access
# include or remove search engines feed readers and other sites
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yandex\. [NC]
# everybody else receives a forbidden 
RewriteRule \.(gif|png|jpeg|jpg|svg)$ - [F]
</IfModule>
Я специально оставил комментарии и строчки с поисковиками, чтобы было более понятно.