Ссылки через редирект

Автор Avdenago, 20 марта 2008, 16:43:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Yworld_garry

Пока нет красивого решения, сделай вместо вот этого
"' . $boardurl . '
Вот так в двух местах.
"http://мой сайт

trehol

Цитата: Yworld_garry от 28 апреля 2009, 23:50:24
Пока нет красивого решения, сделай вместо вот этого
"' . $boardurl . '
Вот так в двух местах.
"http://мой сайт
Спасибо ,уже догадался, работает без ошибок.

oldcopy

Спасибо большое, все работает.
AUT VIAM INVENIAM AUT FACIAM <или найду дорогу или проложу ее сам (лат.)>

bingo_m

BIOHAZARD
на знаю как на 1.1.8, но 2.0 RC1 возникают траблы с аттачами.
пришлось отказаться от твоей конструкции и влепить вот такой вариант:

                        array(
                                'tag' => 'url',
                                'type' => 'unparsed_content',
                                'content' => '<a href="http://мой_сайт/go.php?url=$1" class="bbc_link new_win" target="_blank" rel="nofollow">$1</a>',
                                'validate' => create_function('&$tag, &$data, $disabled', '$data = strtr($data, array(\'<br />\' => \'\'));'),
                        ),
                        array(
                                'tag' => 'url',
                                'type' => 'unparsed_equals',
                                'before' => '<a href="http://мой_сайт/go.php?url=$1" class="bbc_link new_win" target="_blank" rel="nofollow">',
                                'after' => '</a>',
                                'disallow_children' => array('email', 'ftp', 'url', 'iurl'),
                                'disabled_after' => ' ($1)',
                        ),



oldcopy

bingo_m
Цитироватьна знаю как на 1.1.8, но 2.0 RC1 возникают траблы с аттачами.

А в чем именно траблы проявляются?
AUT VIAM INVENIAM AUT FACIAM <или найду дорогу или проложу ее сам (лат.)>

bingo_m

делаем аттач картинку. появляется эскиз. тычем на эскиз и видим ошибку 404 - файл не найден. использую highglide.
смотрим файл ручками на диске - он есть. меняем код на такой как указал я и все работает без проблем.



oldcopy

На 1.1.8 такой трабл был только с внешними ссылками, заменил
a href="' . $boardurl . '/go.php?

на

a href="/go.php?

и все стало работать.
AUT VIAM INVENIAM AUT FACIAM <или найду дорогу или проложу ее сам (лат.)>

ostin

Приветствую, я у себя делаю редирект через .htaccess (можно Redirect, можно RewriteRule), в остальном все то же самое.
Обрабатываются ссылки вида мой_форум/gogo/www.example.com

RedirectMatch /goto/(http://)?(www.)?(.*) http://$2$3

Единственная проблема, не могу сделать, чтобы ссылки с http:// вначале тоже редиректились.


BIOHAZARD

Цитата: ostin от 15 мая 2009, 12:21:05
RedirectMatch /goto/(http://)?(www.)?(.*) http://$2$3
Единственная проблема, не могу сделать, чтобы ссылки с http:// вначале тоже редиректились.


RedirectMatch /goto/(?:http://)?(?:www.)?(.*) http://$1
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

ostin

Не понимаю значения ?: тут. Не работает :) с www прекрасно редиректится

BIOHAZARD

Цитата: ostin от 15 мая 2009, 18:26:52
Не понимаю значения ?: тут. Не работает :) с www прекрасно редиректится
значит искать, но не запоминать найденное
всё работает – проверено лично

http://site/goto/http://www.ya.ru/
http://site/goto/http://ya.ru/
http://site/goto/http://ya.ru

можешь попробовать экранировать

RedirectMatch /goto/(?:http:\/\/)?(?:www\.)?(.*) http://$1
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

bbbbbb

#61

ostin

Цитата: BIOHAZARD от 15 мая 2009, 19:01:48
можешь попробовать экранировать

RedirectMatch /goto/(?:http:\/\/)?(?:www\.)?(.*) http://$1

Не работает как с экранированием, так и без. Какое назначение выражения ":?" ? Служебного символа "двоеточие" в регекспах нет.

Цитата: bbbbbb от 20 мая 2009, 06:08:17
баян!
В каком смысле? Ссылка на эту же тему.

digger®

Цитата: ostin от 20 мая 2009, 16:10:29
Не работает как с экранированием, так и без. Какое назначение выражения ":?" ? Служебного символа "двоеточие" в регекспах нет.
Есть "?:" - passive group

Цитировать
В каком смысле? Ссылка на эту же тему.
У него закливание случилось.

bbbbbb


ostin

Цитата: digger от 20 мая 2009, 16:38:32
Есть "?:" - passive group

Боюсь, что у меня в апаче (2.2.11) это не работает.

вопрос после отладки:
почему по регекспу (http://)?(.*?) из строки, например, http://www.yandex.ru
$1 = ""
$2 = "http:/www.yandex.ru" c одним слешем!
да и в $0, впрочем, один слеш пропадает.

не может дело быть в nginx, который в кач-ве прокси стоит? хотя все заголовки целыми доходят...

mall

ТС спасибо за метод, но если бы реализовать редирект только внешних ссылочег  ::)

Drakonsa

Цитата: mall от 26 июля 2009, 14:51:42
ТС спасибо за метод, но если бы реализовать редирект только внешних ссылочег  ::)
уже писали как можно сделать для внешних. да и самому не так трудно додуматься

Alisa

#68
я вот тут посидела ночьку за кодом и вот что наваяла в файле Subs.php:
было: array(
'tag' => 'url',
'type' => 'unparsed_content',
'content' => '<a href="$1" target="_blank">$1</a>',
'validate' => create_function('&$tag, &$data, $disabled', '$data = strtr($data, array(\'<br />\' => \'\'));'),
),

стало: array(
'tag' => 'url',
'type' => 'unparsed_content',
'content' => '(substr($1,7,11)=="www.sxak.ru")' ? '<noindex><a href="$1" target="_blank">$1</a></noindex>' : '<a href="$1" target="_blank">$1</a>',
'validate' => create_function('&$tag, &$data, $disabled', '$data = strtr($data, array(\'<br />\' => \'\'));'),
),

данный метод работает, но только на ссылки которые вставляются простым написанием линка в теле сообщения.
Помогите мне вот чем:
мне в условие нужно добавить еще 1 урл, что бы на него аналогично не ставилось ноуиндекс - я плохо пшп знаю и незнаю как это реализовать в данном случае.
и подскажите где формируются линки которые идут в BB коде [ url ]
я предположила что тут:
array(
'tag' => 'url',
'type' => 'unparsed_equals',
'before' => '(substr(strstr($1,"w"),0,11)=="www.sxak.ru")' ? '<noindex><a href="$1" target="_blank">' : '<a href="$1" target="_blank">',
'after' => '(substr(strstr($1,"w"),0,11)=="www.sxak.ru")' ? '</a></noindex>' : '</a>',
'disallow_children' => array('email', 'ftp', 'url', 'iurl'),
'disabled_after' => ' ($1)',
),

но данный метод не прокатил - все ссылки noindex где то ошибка я невижу пните в нужном направлении плиззз  ::) ::) ::)

orio!

#69
У меня на форуме редирект внешних ссылок реализован в файле Display.template.php через str_replace

// Show a checkbox for quick moderation?
if (!empty($options['display_quick_mod']) && $options['display_quick_mod'] == 1 && $message['can_remove'])
echo '
<li style="display: none;" id="in_topic_mod_check_', $message['id'], '"></li>';

// Show the post itself, finally!

//************************************************************************
Заменяем все ссылки в посте на редирект
//************************************************************************

$message['body'] = str_replace('<a href="http://', '<a href="http://Ваш сайт.ru/redir.php?http://', $message['body']);

//************************************************************************
Возвращаем внутренние ссылки в посте в нормальный вид
//************************************************************************

$message['body'] = str_replace('<a href="http://Ваш сайт.ru/redir.php?http://Ваш сайт.ru', '<a href="http://Ваш сайт.ru', $message['body']);
$message['body'] = str_replace('<a href="http://Ваш сайт.ru/redir.php?http://www.Ваш сайт.ru', '<a href="http://Ваш сайт.ru', $message['body']);

echo '
</ul>';

if ($ignoring)
echo '<div id="msg_', $message['id'], '_ignored_prompt" style="display: none; clear: left">', $txt['ignoring_user'], '  <a href="#msg', $message['id'], '" onclick="return ignoreToggles[', $message['id'], '].toggle()">', $txt['show_ignore_user_post'], '</a></div>';

echo '
<div class="post" id="msg_', $message['id'], '"', '>';



Всё работает без проблем.

Alisa

а в файле redir.php у вас что?

orio!

redir.php
<?php
$url 
$_SERVER['QUERY_STRING'];
echo 
'<html><head><title>Ваш сайт</title>
<meta http-equiv="Refresh" content="0; URL='
$url'">
</head><body></body></html>'
;
?>


Alisa

#72
спасибо - попробую сейчас ;)
а в robots.txt как вы запретили индексацию?

Alisa

Итог:  ::)
Все работает как часы, НО или вы не написали или просто не обратили на это внимание:
подпись форумчан - закрывается моим методом :) - вот токо я думаю он безумно корявый, но работает и ладно!

orio!

Зачем запрещать индексацию?

А подпись форумчан легко правится, по аналогии, в том же файле Display.template.php

// Show the member's signature?
//************************************************************************
Вставляем редирект в урлы в подписях
//************************************************************************
if (!empty($message['member']['signature']) && empty($options['show_no_signatures']) && $context['signature_enabled'])
{
$message['member']['signature'] = str_replace('<a href="http://', '<a href="http://Ваш сайт.ru/redir.php?http://', $message['member']['signature']);
echo '
<div class="signature">', $message['member']['signature'], '</div>';
$message['member']['signature'] = str_replace('<a href="http://Ваш сайт.ru/redir.php?http://', '<a href="http://', $message['member']['signature']);
}
echo '
</div>
</div>
</div>';
}

digger®

Цитата: orio! от 06 августа 2009, 11:19:51
У меня на форуме редирект внешних ссылок реализован в файле Display.template.php через str_replace

Всё работает без проблем.

А если я буду писать ссылки не "http://...", а "HTTP://..." ?

Alisa

Цитата: digger от 06 августа 2009, 16:41:32
А если я буду писать ссылки не "http://...", а "HTTP://..." ?
ага я тоже это заметила, буду думать как еще можно реализовать, главное я теперь знаю где копать, взяла лопату и пошла копаться - решение выложу тут если меня не опередят ::)

orio!

да, действительно...  не учел и "HTTP://..." и "HtTp://..." и т.п.  :)

Deathroot

Объясните пожалуйста как мне сделать что бы ссылки с BB кодов: URL, картинка, ютуб видео были активны и шли через редирект. Счетчики и банеры тоже. Версия форума: 2.0 RC1.2

kostyk

Ребята! А как этот пример реализовать, чтоб пользователь при переходе по внешней ссылке, попадал на промежуточную страницу с рекламой (как вконтакте), и на этой промежуточной странице, должна быть эта же внешняя ссылка, и если пользователь не жмет на эту ссылку, то его автоматом перенаправляет на нее же, например секунд через 30!

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kostyk

Я не задержку просил, я спрашивал про реализацию в целом, можно ли так как я описал сделать этот скрипт?

artruslan

Помогите мне, кто-нибудь справиться с этим редиректом никак не могу сделать! Пробую разные варианты никакой не работает! Что может быть не правильно и как это исправить?

supmener

Цитата: Avdenago от 21 марта 2008, 13:12:20
1. Эмм.... Может кто-нибуть обяснить что это дает? Зачем это нужно?

1. Для исключения утекания веса страницы - чисто СЕО заморочка.
А есть ли какие нибудь статьи на эту тему про ссылки без уменьшения ценности?

decebel2

Что только не пробовал, редирект работает с внутренними ссылками, но при переходе на внешнюю страницу-ошибка 403. Что делаю не так?

decebel2

Убрал страницы 403 и 404, и редирект пошел...Но вот только редиректит теперь он почему-то на главную страницу моего-же форума.

black4k

Всё сделал как писал BIOHAZARD всё работает класс но только теперь YouTube BBCode не Aeva ~ Auto-Embed Video & Audio не работают. Видео можно вставить с помощью тега хтмл, нельзя  как не будь это исправит? кроме как убирания редикта.....  :)

Солярис

Обнаружил такую бяку. Необходимо было в ответ вставить адрес http://egrul.nalog.ru/fns/ .
Как обычно вставил. Проверяю на переход по этой ссылке. И ничего. Вместо этого адреса почему-то перебрасывает на адрес такого типа: http://egrul.nalog.ru/fns/www.valaam-info.ru
Разумеется, браузер выдает следующее сообщение:
ЦитироватьNot Found
The requested URL /fns/www.valaam-info.ru was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Пробовал на этом форуме вставить эту же ссылку. Здесь переход по ней происходит абсолютно нормально.
В чем может быть проблема?

ren_13

Приветствую!
Проблема та же что у black4k 1в1. Пообщавшись персонально, понял, что в результате чел отказался от функциональности плагина в пользу редиректа. У меня форум спортивный, на нем роликов вагон. И я человеческую функциональность там ставлю выше раскрутки. Но сам не программер. Потому стою у закрытых ворот рая.

Неужели нельзя обойти ссылки плагина. Т.е. генерить редирект на этапе парсенья выдачи, а не хранимой в базе инфы. Вот например я смотрю сорс страницы и вижу - тело месседжа, в теле яваскрипт, в явексрипт - хреф. Мне головой понятно, что все что вне тела и в скрипте - неприкосновенно, остальное - достойно редиректа. А реализация такого функционала сложна?

Спасибо

BIOHAZARD

Цитата: ren_13 от 24 марта 2010, 17:51:07
генерить редирект на этапе парсенья выдачи, а не хранимой в базе инфы
оно так и работает

в остальном Вас не вполне понял, возможно мне просто спать уже пора :о/
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

ren_13

ну я не программер, не знаком с логикой движка и совершенно не претендую на "чтото"

давайте попробуем разобраться.

Видеоплагин берет обычные     [ URL ]http://www.youtube.com/v/XXXXXXX [ /URL] в теле мессаги
и преобразует в коде (когда я смотрю сорс) в <script type="text/javascript"><!-- // --><![CDATA[
      swfobject.embedSWF("http://www.youtube.com/v/ХХХХХХХ ...............................


предложенная редирект-модификация берет [ URL ]http://сайт.com/ [ /URL]
и преобразует его в <a href="http://мойфорум.ком/go.php?url=http://сайт.com" target="_blank">http://сайт.com</a>         результирующего кода

Прально?
И у них все зашибца пока на месте сайт.com не оказывается ютюб, например

получается вот что
<a href="http://мойфорум.ком/go.php?url=http://www.youtube.com/watch?v=ХХХХХХХ#normal" target="_blank">описание ролика</a>

Т.е. на лицо явный конфликт интересов,  причем победа по очкам остается скорее за редиректом, чем за плагином. Безусловно, можно порадоваться, но ...   wallbash


Я, открывая сорцы страницы со вставленными видеороликами (плагин Avea, но без логики редиректов), вижу конкретно ГДЕ УМЕСТЕН РЕДИРЕКТ а ГДЕ НЕТ.
а ваш алгоритм, предложенный выше, не видит. Он тупо и безтактно ставит редирект даже в яваскрипте и кошканеходи. Возможно, есть способ парсить код ближе к выдачи, после всего, и заприщать редиректить ссылки из яваскрипта. Вот такой был вопрос.

спасибо
ЗЫ. а может действительно поспать? ;)

Bugo


ren_13

Цитата: Bugo от 24 марта 2010, 18:52:31
http://www.simplemachines.ru/index.php?topic=5881.msg66162#msg66162
на редирект линкс версией не вышел ;(
ну а альтернативы по юзабиити - нет
вопрос открыт

ren_13

#93
прошу прощения - не нашел как тут добавлять или изминять.
Вобщем, у меня толковый человек пофиксил эту проблему.
Внимание! Редирект и АВЕО РАБОТАЮТ ВМЕСТЕ!!!
это возможно! ;)
Постараюсь вечером выклянчить пилюлю...

Макар

вообще то многим пригодилось бы
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

ren_13

Yura:

Цитироватьarray(
  'tag' => 'url',
  'type' => 'unparsed_content',
  'validate' => create_function('&$tag, &$data, $disabled', '
    $data = strtr($data, array(\'<br />\' => \'\'));
    global $boardurl;
    if (preg_match("/youtube/",$data) !== 0)
{
$tag[\'content\'] = \'<a href="$1">$1</a>\';
}

    else
{
$tag[\'content\'] = \'<a href="' . $boardurl . '/go.php?$1" target="_blank" rel="nofollow">$1</a>\';
}
  '),
),
array(
  'tag' => 'url',
  'type' => 'unparsed_equals',
  'after' => '</a>',
  'disallow_children' => array('email', 'ftp', 'url', 'iurl'),
  'disabled_after' => ' ($1)',
  'validate' => create_function('&$tag, &$data,  $disabled', '
  global $boardurl;
    if(preg_match("/youtube/",$data) !== 0)
{
$tag[\'before\'] = \'<a href="$1">\';
}
    else
{
$tag[\'before\'] = \'<a href="' . $boardurl . '/go.php?$1" target="_blank" rel="nofollow">\';
}
  '),
),

Рён: это вместо того что они предложили?
Yura: да
Yura: это дополненая версия предложеного


У меня сейчас нет возможности сравнить с оригиналом и убедится, что все действительно так.
Но вобщем-то я склонен верить.


Макар

Исходя из кода решается проблема ютуба , а остальные ~128 видео сайтов идут лесом.
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

Drakonsa

А не проще ли раскопать парсилку и дописать в ней условие проверки \ преобразования ссылки с go?

ren_13

Это вы со мной?
или так же в пустоту как я писал? ;)

Drakonsa

ren_13 я кидаю вам идеи... дальше сами смотрите в пустоту аль нет...