2013-04-26 3 views
2

Я пытаюсь перенаправить все внешние ссылки через php-файл с URL-адресом внешнего сайта, установленным как переменная.перенаправить внешний url только как строку запроса

Пример. Если мой сайт (mysite.com) есть ссылка на google.com/results/1234 Я хотел бы автоматически переписать URL на что-то Линк mysite.com/external.php?p=google.com/results/1234.

я хотел раствор HTAccess, так как я не могу изменить файлы, связанные с внешними URL'о, без затрагивая другие URL-адреса на сайте.

Я НЕ хочу перенаправить любую ссылку с помощью mysite.com.

Если кто-то может указать мне в правильном направлении, я был бы очень признателен.

+2

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

+0

Это действительно делает много смысла. Спасибо faa –

ответ

1

Невозможно с помощью файла .htacess. .htaccess может ТОЛЬКО переписывать входящие URL-адреса с именами доменов, которые разрешают ваш веб-сервер. Он не контролирует исходящие URL-адреса, так как эти запросы напрямую отправляются на исходящие веб-серверы (в вашем примере, google.com).

Возможно, вам понадобится решение для сценариев, которое перенаправляет пользователя по вашему желанию, подключаясь к onclick событиям всех ссылок.

EDIT: Вот краткое доказательство концепции с использованием jQuery. Это должно заставить вас начать.

<html> 
<head> 
<title>jQuery global redirector</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
</head> 
<body> 
<a href="http://google.com/search?q=jquery">google url would redirect</a><br /> 
<a href="http://mysite.com/somepage.php">mysite.com url won't redirect</a> 
<script> 
<!-- 
    $("a").click(function(e) { 
     var url = e.target.href; 
     if(!(url.startsWith("http://mysite.com") || url.startsWith("mysite.com"))) { 
     window.location.href = "http://mysite.com/redirect.php?site=" + url; 
     e.preventDefault(); 
     } 
    }); 
//--> 
</script> 
</body> 
</html> 

Вы, вероятно, следует поместить скрипт в другой файл (скажем, redirect.js), а затем включить этот скрипт (в конце < HTML>) выборочно в ваших страницах, которые нуждаются в такой переадресации. И не забудьте также импортировать jQuery!

+0

Спасибо Рави за это решение! Я не думал использовать jquery. У вас есть мнение о том, как этот метод повлияет на SEO? Мне интересно, есть ли у меня все еще шанс на утечку через жестко закодированные ссылки, когда боты посещают сайт. –

+0

Это не повлияет ни на рейтинг, ни на понижение. Это нейтрально с точки зрения SEO, поскольку текст '' остается таким же - ссылки в ваших статьях и т. Д. Остаются неизменными. На самом деле, ваши теги link даже не тронуты (например, добавление обработчика onclick = ""), и это красота jQuery. –

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