@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;
  • Вопрос задан
  • 666 просмотров
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы