2013-04-18 2 views
1

Я хочу, чтобы перенаправить только внешние ссылки не ссылки с моего сайта, например, для:Перенаправления только внешние ссылки

перенаправления: http://google.com НЕ перенаправление: http://mysite.com/page.php

$url = $_GET['url']; 
header("Refresh: 30; url=$url"); 

я уже сделал что-то, но это не сработало:

if ($url == $host); 

Может ли кто-нибудь помочь мне перенаправить только внешние ссылки?

+2

http://php.net/ parse_url – str

ответ

3

Вы можете использовать регулярные выражения, чтобы сделать это, но проще в использовании parse_url(), который предназначен для возврата составных частей URL, и ссылаться на них для любой цели, вам нужно [испытания]:

<?php 
    // identify host from GET URL and compare 
    if (parse_url($_GET['url'], PHP_URL_HOST) !== 'mysite.com') { 

     // Redirect after 3 seconds 
     header("Refresh: 3; url=".$_GET['url']); 
    } 
?> 

Вы также может тянуть весь массив компонентов URL [схемы, хост, порт, пользователь, пройти, путь запроса, фрагмент], что делает их все доступные для использования:

<?php 

    // Your URL from whatever source 
    $url = $_GET['url']; 

    // Parse it and create an array of URL components 
    $purl = parse_url($url); 

    // identify host component and compare 
    if ($purl['host'] !== 'mysite.com') { 

     // Redirect after 3 seconds 
     header("Refresh: 3; url=$url"); 

    } 

?> 
+0

ну просто сказать;) – hakre

+0

@nickhar Спасибо за ваш ответ, во-первых, я не хочу перенаправлять только google.com, я имею в виду все внешние ссылки, кроме моих собственных ссылок (mywebsite). Google был примером. поэтому я ставлю $ _GET ['url']; вместо http://google.com. это верно? однако он не работает, все еще перенаправляет все ссылки, даже мои собственные ссылки. что мне делать? Спасибо – 2013-04-19 07:35:19

+0

@pedramalipour Можете ли вы привести пример, из которого должно быть или из какого из этих внешних ссылок? Где это будет видно в браузере? – nickhar

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