@full-size

Как защититься от хотлинка на виртуальном хостинге?

Сайт на вордпресс

Сайт на виртуальном хостинге, правка файла конфигурации невозможна (так утверждает хостер).

Цель : защита от хотлинка с помощью файла .htaccess. на виртуальном хостинге при связке nginx+apache

Обычный код не работает так как (из ответа техподдержки):

"На наших серверах работает связка nginx+apache. Через nginx отдаются статические файлы с расширениями: jpg, jpeg, gif, png, css
Это значит файлы не обрабатываются через apache и если есть какие-то директивы в файле .htaccess, то они тоже не подействуют.
Чтобы Apache мог обработать данные файлы, нужно создавать ссылки на файлы с другим расширением, либо на файлы, отсутствующие на сервере. В этом случае запрос будет передаваться веб-серверу Apache, и можно будет использовать директивы .htaccess для обработки этих запросов!

Объясните по человечески как это все надо сделать на конкретном примере, с помощью какого кода?

В интернете есть решение только для правки файла конфигурции сервера, у меня доступа к нему естественно нет!

Возможно есть другие варианты решения этой проблемы, кто знает, подскажите плиз.

В сети было найдено решение по замене коренного index.php, но оно никакого результата не дало:

<?php
ob_start();
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');
$searches = array(
			'/wp-content/uploads/2013/04/',
			'/wp-content/uploads/2013/05/',
			'/wp-content/uploads/2013/06/'
			);
			
$replaces = array(
			'/images/04/', 
			'/images/05/',
			'/images/06/'	
			);
			
$buffer = str_ireplace($searches, $replaces, ob_get_contents());
ob_end_clean();
echo $buffer;
  • Вопрос задан
  • 740 просмотров
Пригласить эксперта
Ответы на вопрос 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Если на входе стоит Nginx, то не важно то вы там делаете для статики (картинки, стили, скрипты) в .htaccess - запрос до Apache (и, соответственно, до обработки правил в .htaccess) не дойдет никогда. Для этого Nginx на входе и ставят.

Hotlink protection на Nginx делается легко с помощью всего лишь одного правила для вашего виртуального хоста. Если хостер не дает вам возможности редактировать конфиг вашего виртуального хоста (или хотя бы его часть) - надо менять хостера. Другого способа решить вашу проблему я не вижу. Разве что CDN, как пишет Михаил (по сути, это еще один Nginx на входе перед всем остальным, но в этот раз вы можете редактировать конфиг, в отличие от вашего хостинга).
Ответ написан
Комментировать
MikeKosulin
@MikeKosulin
1. Переехать на другой хостинг.
Потому что если используется nginx+apache, то запросы идут через nginx для статики, а все что не статика проксируется на апач, следовательно .htaccess не поможет.
2. Использовать защиту от хотлинков через CDN
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы