2016-02-19 6 views
0

Это ТОЧНО такой же случай, как: (htaccess) How to prevent a file from DIRECT URL ACCESS?HTAccess коды не работают

Но, не один из кодов предоставляется ответов не работает для меня. Я пробовал 1 на 1, потом пытался объединиться, но все равно не работает. Вот мой код:

# prevent direct image url access 
# ---------- 
    RewriteEngine On 

    RewriteCond %{HTTP_REFERER} !^$ 
    RewriteCond %{HTTP_REFERER} !^http(s)://(www\.)?example\.com [NC] 
    RewriteCond %{HTTP_REFERER} !^http(s)://(www\.)?example\.com.*$ [NC] 

    # this not works 
    RewriteRule \.(png|gif|jpe?g)$ - [F] 

    # and this 
    RewriteRule \.(png|gif|jpe?g)$ - [F,NC] 

    # and this 
    RewriteRule \.(png|gif|jpe?g)$ https://example.com/wp-login.php [NC,R,L] 

    # even by combining them 
# ---------- 
# /prevent direct image url access 

Случай моделирования: index.php имеет <img src="test.png" alt=""> и должен быть нормально доступны. Требование: http://example.com/test.png не должно быть доступно.

Я использую WordPress в wp-engine, и я думаю, что переписывание WordPres по умолчанию не вызывает проблемы, поскольку код из ответов помещен над WordPress переписывать.

UPDATE

Я использую PHP версии 5.5.9-1ubuntu4.14 на Apache 2 на в.ч. двигателя

+0

Как вы их протестировали? Встраивали ли вы изображения в непрозрачный сайт? Или вы просто пытались получить к ним доступ напрямую с помощью своего браузера? –

+0

@GeraldSchneider, я обновил вопрос. Я тестирую, обращаясь к текущему сайту –

+0

, обратите внимание, что после редактирования файла htaccess вы должны очистить свой кеш до тестирования, если новое правило работает или нет. – andrew

ответ

0

Ваши правила в основном работают для меня, за исключением одной вещи:

(s) не делает то, что вы думаете.

RewriteCond %{HTTP_REFERER} !^http(s)://(www\.)?example\.com [NC] 

С круглыми скобками вы определяете группу, которая в данный момент не имеет никакого смысла. Если вы удалите (s), он работает для http.

Если вы хотите использовать HTTPS вы тоже должны написать это:

RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC] 

? сделает предыдущий символ (или группы, если в скобках) необязательно.

+0

urgh, я снова обновил вопрос. Поэтому я просто удаляю (-ы) в качестве вашего совета. Но все равно не работает как на localhost, так и на wp-engine. –

Смежные вопросы