Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2010-12-16 16:45:18

greenpiss
Участник
Откуда Saint-Petersburg
Зарегистрирован: 2008-10-18
Сообщений: 100
Рейтинг :   

Внешние ссылки во внутренние

Проще говоря, нужно, чтобы ссылки вида http://gmail.com можно было превратить в http://mysite.ru/goto?gmail.com, например.
Как можно организовать такое на NG? Юзал поиск, подобной темы не нашел…

Не в сети

#2 2010-12-16 16:58:15

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Внешние ссылки во внутренние

Да лан, все находится http://ngcms.ru/forum/viewtopic.php?id=321 smile

Не в сети

#3 2010-12-16 17:50:01

greenpiss
Участник
Откуда Saint-Petersburg
Зарегистрирован: 2008-10-18
Сообщений: 100
Рейтинг :   

Re: Внешние ссылки во внутренние

ROZARD пишет:
$outkeys [] = 'href="'.$urlREF.'"';

Замени на

$chek_url = parse_url($keys['href']);
if ($chek_url['host'] != 'site.ru')
$outkeys [] = 'href="http://site.ru/go.php?'.$urlREF.'"';
else
$outkeys [] = 'href="'.$urlREF.'"';

Остальное всё как там...

P.S. Не проверял...:rolleyes:

ссылка на 2з-прожект уже не работает, после замены в parse.class.php что дальше делать? roll

Не в сети

#4 2010-12-16 18:23:11

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Внешние ссылки во внутренние

Все, этого хватит. На форуме 2z было про содержимое go.php

Не в сети

#5 2010-12-16 18:30:02

greenpiss
Участник
Откуда Saint-Petersburg
Зарегистрирован: 2008-10-18
Сообщений: 100
Рейтинг :   

Re: Внешние ссылки во внутренние

Только вот 2z-project сайт уже не работает sad

Не в сети

#6 2010-12-16 19:02:30

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Внешние ссылки во внутренние

Google работает. Там десяток различных вариаций go.php

Не в сети

#7 2010-12-16 19:40:44

greenpiss
Участник
Откуда Saint-Petersburg
Зарегистрирован: 2008-10-18
Сообщений: 100
Рейтинг :   

Re: Внешние ссылки во внутренние

Короче, может пригодится кому-нибудь:

Файл go.php:

<?
$site = $_GET['site'];
Header (”Location:”.$site.”");
exit();
?>

Заливаем файл go.php в корень, закрываем в файле robots.txt индексацию файла go.php:
User-agent: *
Disallow: /go.php

Теперь, чтобы сделать внешнюю ссылку внутренней:
http://my-site.ru/go.php?site=http://yandex.ru

Вышеперечисленные замены строк в parse.class.php делать в общем-то нахрен не нужно.

Не в сети

#8 2010-12-16 20:37:22

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Внешние ссылки во внутренние

Автоматически удобнее же, чем самому руками каждую править

Не в сети

#9 2010-12-19 06:34:28

Neo
Участник
Откуда SPB, Russia
Зарегистрирован: 2010-01-04
Сообщений: 463
Рейтинг :   

Re: Внешние ссылки во внутренние

greenpiss пишет:

Короче, может пригодится кому-нибудь:

Файл go.php:

<?
$site = $_GET['site'];
Header (”Location:”.$site.”");
exit();
?>

Заливаем файл go.php в корень, закрываем в файле robots.txt индексацию файла go.php:
User-agent: *
Disallow: /go.php

Теперь, чтобы сделать внешнюю ссылку внутренней:
http://my-site.ru/go.php?site=http://yandex.ru

Вышеперечисленные замены строк в parse.class.php делать в общем-то нахрен не нужно.

Попробовал в ручном режиме - не пашет - "внутенняя ошибка сервера 500"
Что можно предполжить?

Не в сети

#10 2010-12-19 12:57:45

KhadeR
Участник
Зарегистрирован: 2009-09-16
Сообщений: 207
Рейтинг :   17 

Re: Внешние ссылки во внутренние

Neo,
parse.class.php ~324 перед

// Now let's compose a resulting URL
$outkeys [] = 'href="'.$urlREF.'"';

вставь

$check_url = parse_url($keys['href']);
if ($check_url['host'] != $_SERVER['HTTP_HOST']) $urlREF = home.'/go.php?url='.rawurlencode(base64_encode($urlREF));

содержимое go.php:

<?php
//
// Next Generation CMS (http://ngcms.ru/)
// Name: go.class.php
// Description: Redirect URL
//

function reset_url($url) {
	$value = str_replace ( "http://", "", $url );
	$value = str_replace ( "www.", "", $value );
	$value = explode ( "/", $value );
	$value = reset ( $value );
	return $value;
}
$url = rawurldecode ( $_GET['url'] );
$url = @base64_decode ( $url );
$url = str_replace ( "&", "&", $url );

$_SERVER['HTTP_REFERER'] = reset_url ( $_SERVER['HTTP_REFERER'] );
$_SERVER['HTTP_HOST'] = reset_url ( $_SERVER['HTTP_HOST'] );

if (($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER']) or $url == "") {
	@header ( 'Location: /' );
	die ('Access denied!!!<br /><br />Please visit <a href="/">'.$_SERVER['HTTP_HOST'].'</a>');
}

@header ( 'Location: '.$url);
die ('Link Redirect:<br /><br />Please click <a href=".'$url.'">here.</a>');
?>

Изменено KhadeR (2010-12-19 13:06:09)

Не в сети

#11 2010-12-20 22:25:54

magliona
Участник
Откуда Украина
Зарегистрирован: 2010-06-23
Сообщений: 215
Рейтинг :   
Сайт

Re: Внешние ссылки во внутренние

После установки данного кода,ссылки не опридилялись,как будто пропал href

Не в сети

#12 2010-12-20 22:47:12

ROZARD
Модератор
Откуда Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: Внешние ссылки во внутренние

Кароче находишь:

// Now let's compose a resulting URL
				$outkeys [] = 'href="'.$urlREF.'"';

Меняешь на:

if(substr($urlREF,0,5) !='http:' && substr($urlREF,0,4) !='ftp:') {
					$urlREF = 'http://'.trim($urlREF);
				}
				
				if(substr($keys['href'],0,5) !='http:' && substr($keys['href'],0,4) !='ftp:') {
					$keys['href'] = 'http://'.trim($keys['href']);
				}
				
				// Now let's compose a resulting URL
				// $chek_url = parse_url($keys['href']);
				preg_match("/^(http:\/\/)?([^\/]+)/i", $keys['href'], $chek_url);
				preg_match("/^(http:\/\/)?([^\/]+)/i", $config['home_url'], $config_url);
				if ($chek_url['2'] == $config_url['2']) {
					$outkeys [] = 'href="'.$urlREF.'"';
				} else {
					$outkeys [] = 'href="'.$config['home_url'].'/go.php?url='.$urlREF.'"';
				}

После находишь:

// Fill an output replacing array
				array_push($rdest, "<a ".(implode(" ", $outkeys)).">".$alt.'</a>');

И изменяешь:

// Fill an output replacing array
				if ($chek_url['2'] == $config_url['2']) {
					array_push($rdest, "<a ".(implode(" ", $outkeys)).">".$alt.'</a>');
				} else {
					array_push($rdest, "<noindex><nofollow><a ".(implode(" ", $outkeys))." rel=\"nofollow\">".$alt.'</a></noindex></nofollow>');
				}

В корне создаешь файл go.php с вот таким содержимым:

<?php 
$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : ''; 
if(preg_match('#(https?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){ 
	sleep(1); 
	header("Location: ".$url); 
	die(); 
}

И не еб*** мозг...
Делал в виде плагина и вроде выкладывал год назад...

Изменено ROZARD (2010-12-20 22:47:50)

Не в сети

#13 2010-12-22 05:26:24

Neo
Участник
Откуда SPB, Russia
Зарегистрирован: 2010-01-04
Сообщений: 463
Рейтинг :   

Re: Внешние ссылки во внутренние

Не работает ни один из вариантов go.php мне надо пока без парсера ссылок запустить в варианте greenpiss
чтобы ручками прописать в HTML http://my-site.ru/go.php?site=http://yandex.ru.
t.k. использую тини редактор.

Изменено Neo (2010-12-22 05:28:37)

Не в сети

#14 2010-12-22 05:52:48

greenpiss
Участник
Откуда Saint-Petersburg
Зарегистрирован: 2008-10-18
Сообщений: 100
Рейтинг :   

Re: Внешние ссылки во внутренние

Neo, отписался в ЛС.

Не в сети

#15 2010-12-27 02:21:06

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Внешние ссылки во внутренние

greenpiss, в чём смысл использования подобного редиректора?
Защита от "утекания" CY или что-то другое?

Не в сети

#16 2010-12-31 02:35:52

oldvovk
Участник
Зарегистрирован: 2010-10-14
Сообщений: 137
Рейтинг :   
Сайт

Re: Внешние ссылки во внутренние

Основная, скорее всего, изменить внешнюю на внутреннюю (требование систем рекламы и размещения).
Второстепенное - показатели.
Хотя игра с редиректом при Яндексе может и боком выйти.

Не в сети

Подвал раздела

Работает на FluxBB