Помогите с редиректом для всех внешних ссылок

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем ka4ek100kg, 8 сен 2010.

Статус темы:
Закрыта.
  1. ka4ek100kg

    ka4ek100kg Создатель

    Регистр.:
    13 июл 2010
    Сообщения:
    17
    Симпатии:
    1
    Помогите с редиректом для всех внешних ссылок. Мне надо, чтобы все внешние ссылки, ведущие с моего сайта анонимизировались(проходили через сайт anonym.to).

    Например, на моем сайте www.my_site.ru лежит внешняя ссылка www.luboi_sait.ru, ведущая на сайт www.luboi_sait.ru, то при нажатии пользователя на эту ссылку пойдет редирект на такую ссылку
    Код:
    http://www.my_site.ru/link.php?http://anonym.to?http://www.luboi_sait.ru
    Т.е. надо создать файл link.php в корне моего сайта и прописать в нем такой редирект для всех внешних ссылок. Что именно надо прописать в этом файле? И что надо прописать в .htaccess для такого редиректа всех внешних ссылок(по маске наверное)?

    Это надо сделать именно посредством php и(или) .htaccess, а не через ява скрипт с сайта anonym.to
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    внешние ссылки не проходят через htaccess, проходят через браузер. Так что придётся заменят с php все внешние ссылки на новые
    PHP:
    http://www.my_site.ru/link.php?<?=urlencode("http://anonym.to?".$staraya_ssylka?>
    а link.php такой
    PHP:
    <?
    header("Location: ".urldecode($_SERVER['argv'][0]));
    ?>
    или ещё пример с яваскриптом который заменяет все внешние ссылки после загрузки страницы
    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        $("a").each(function(i){
            var redirect = new RegExp("http://","gi");
            if(redirect.test($(this).attr("href"))){
                $(this).attr("href", "http://www.my_site.ru/link.php?"+encodeURIComponent("http://anonym.to?"+$(this).attr("href")))
            }
        });
    });
    </script>
    
    </head>
    
    <body>
    <a href="https://www.nulled.cc">nulled</a>
    <a href="#">local</a>
    </body>
    </html>
    
     
    ka4ek100kg нравится это.
  3. ka4ek100kg

    ka4ek100kg Создатель

    Регистр.:
    13 июл 2010
    Сообщения:
    17
    Симпатии:
    1
    Т.е. надо все старые ссылки переписывать? Ок.
    А как же быть, к примеру, с форумом - в нем пользователь пишет обычную ссылку, а потом она автоматически заменяется на ссылку с редиректом на anonym.to Т.е. при создании обычной ссылки она сразу заменяется на нужную. Мне и нужно именно автоматическое перенаправление с обычных ссылок.
    К примеру, посмотрите на внешние ссылки ЭТОГО ФОРУМА, допустим в ЭТОМ СООБЩЕНИИ - там пользователь при создании своего сообщения просто пишет обычную ссылку, а потом после создания сообщения она автоматически заменяется на ссылку с редиректом на anonym.to...

    Или даже взять пример с этого форума Нуллед - пользователь пишет обычную внешнюю ссылку, а она автоматически проходит через файл r.php, а потом уже ведет на нужный внешний сайт...
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Переписывать не нужно если перед показом сообщения его пропарсить на поиск ссылок и заменить все старые ссылки новыми, как-то так
    PHP:
    $text preg_replace('#"((.+)://[^"]+)"#sie'"'http://www.my_site.ru/link.php?'.urlencode('http://anonym.to?'.urldecode('$1'))"$text);
    или сохранять сообщение уже с новыми ссылками, тогда надо будет во всех старых сообщениях переписать ссылки на новые.
    Возможно для форумов плагины есть которые это делают.
     
    ka4ek100kg нравится это.
  5. Agler

    Agler Постоялец

    Регистр.:
    17 авг 2008
    Сообщения:
    91
    Симпатии:
    13
    Для большинства форумных движков уже сделали эти плагины, также и для сайтовых cms такие видел. Заменять все внешние ссылки должен скрипт который их выводит, в данном случае форум
     
    ka4ek100kg нравится это.
  6. TyT

    TyT Ня!

    Регистр.:
    19 июн 2006
    Сообщения:
    492
    Симпатии:
    203
    У меня вопрос на этуже тему, но "модифицированный": как спрятать/заблокировать все ссылки со страницы вида http://search.yahoo.com/... ? (ссылки формируются в скрипте плеера yahoomediaplayer)
    пытался через .htaccess но как оказалось redirect не обрабатывает внешних ссылок (либо я не смог правильно параметры задать)
    приведенный выше пример с jquery срабатывает "чересчур" агрессивно и блокирует саму работу скрипта (как я понял он абсолюно все ссылки блокирует, а надо только начинающиеся на http://search.")
    Собственно сам нашел ответ, если когото также интересует как избавится от линка на поисковик, то надо после вызова скрипта добавить:
    PHP:
    <script type="text/javascript">
       
    // Disable Yahoo! Media Player search links
       
    function apiReadyHandler(){
          
    YAHOO.MediaPlayer.onMediaUpdate.subscribe(DisableYahooLinks);
          
    YAHOO.MediaPlayer.onTrackStart.subscribe(DisableYahooLinks);
          
    setTimeout(DisableYahooLinks2000);
       }
       function 
    DisableYahooLinks(){
          
    DisableLink(document.getElementById('ymp-meta-track-title'));
          
    DisableLink(document.getElementById('ymp-meta-artist-title'));
          
    DisableLink(document.getElementById('ymp-meta-image'));
          
    DisableLink(document.getElementById('ymp-meta-album-title'));
       }
       function 
    DisableLink(el){
          if(
    el){
             
    el.href 'javascript:void(0)';
             
    el.onclick = function(){ return false; };
          }
       }
       
    YAHOO.MediaPlayer.onAPIReady.subscribe(apiReadyHandler);
    </script>
     
  7. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    В плеере можно всё поизменять тексты, ссылки, стили. Плеер флешовый тогда ещё возможно запустить интернет радио типа shoutcast в mp3 формате надо только в ссылке добавить ;.mp3 чтоб добавил в список.

    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    
    <script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script>
    
    <script type="text/javascript">
    function change(){
        
        //текст в плеере заменяем
        document.getElementById('ymp-getplayer').innerHTML = 'мой супер плеер!';
        document.getElementById('ymp-getplayer').href = 'https://nulled.cc';
        
        //секретное сообщение правый клик на логотипе
        document.getElementById('ymp-secret-msg').innerHTML = 'мой супер плеер!';
        //или спрятать логотип
        document.getElementById('ymp-yahoo-logo').style.display = 'none';
        
        //ссылка на картинке альбома заменяем
        document.getElementById('ymp-meta-image').href = 'https://nulled.cc';
        
        //ссылка на названии в плеере заменяем
        document.getElementById('ymp-meta-track-title').href = 'https://nulled.cc';
    }
    
    var apiReadyHandler = function (){
        
        
        YAHOO.MediaPlayer.onMediaUpdate.subscribe(change);
        YAHOO.MediaPlayer.onTrackStart.subscribe(change);
        YAHOO.MediaPlayer.onPlaylistUpdate.subscribe(change);
    }
    YAHOO.MediaPlayer.onAPIReady.subscribe(apiReadyHandler);
    </script> 
    
    
    </head>
    
    <body>
    
    <a href="http://mediaplayer.yahoo.com/example1.mp3">First link</a>
    <a href="http://mediaplayer.yahoo.com/example2.mp3">Second link</a>
    <a href="http://mediaplayer.yahoo.com/example3.mp3">Third link</a>
    <a href="http://205.188.215.226:8006;.mp3">Хардкор в массы!</a>
    
    </body>
    </html>
    
     
Статус темы:
Закрыта.