2015-03-29 2 views
0

Я не хочу, чтобы таблица стилей (размещенная со мной) загружалась в пару доменов.Отключить таблицу стилей на основе referrer

Это то, что я пытаюсь, но не работает:

RewriteEngine on 

RewriteCond %{HTTP_REFERER} ^http://example1.com/ [NC] 
RewriteRule \.css$ http://www.mywebsite.com/dummy.css [R,L] 

RewriteCond %{HTTP_REFERER} ^http://example2.com/ [NC] 
RewriteRule \.css$ http://www.mywebsite.com/dummy.css [R,L] 

Как я могу заставить его работать?

+0

Вы не можете. Заголовок referrer в HTTP-запросе может быть подделан как любая другая деталь запроса. Поэтому он не подходит для защиты. – arkascha

+1

Это хорошо, потому что eBay не обманет его. Кто-то использует его в своем списке ebay. – 3zzy

+0

Как вы это тестируете? Вы смотрите на заголовки HTTP, которые вы отправляете и получаете, когда вы делаете запрос? (Таблицы стилей обычно кэшируются). – Quentin

ответ

0

CSS/.htaccess

Options +FollowSymLinks 
RewriteEngine On 

# Redirect requests to load.php 
RewriteCond %{REQUEST_URI} .*\.css$ [NC] 
RewriteRule .* load.php 

CSS/load.php

$referrer = $_SERVER['HTTP_REFERER']; 

if (strpos($referrer, 'allowedwebsite1.com') !== false or 
    strpos($referrer, 'allowedwebsite2.com') !== false) { 

    header("Content-type: text/css", true); 
    $css = file_get_contents("style.css"); 
    echo $css; 
} 
else { 
    header("Content-type: text/css", true); 
    echo ''; // empty stylesheet 
} 
Смежные вопросы