2013-04-18 5 views
1

나는하지 예를 들어 내 사이트에서 링크 만 외부 링크를 리디렉션 할 하지만 작동하지 않습니다.리디렉션에만 외부 링크

if ($url == $host); 

외부 링크 만 리디렉션 할 수있는 사람이 있습니까?

+2

http://php.net/ parse_url – str

답변

3

당신은이 작업을 수행하는 정규 표현식을 사용할 수 있지만,이 URL의 구성 부품을 반환하고 당신이 필요로하는 어떤 목적을 참조 할 수 있도록 설계되었습니다 parse_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

well just say;) – hakre

+0

@nickhar 답장을 보내 주셔서 감사합니다. 먼저 google.com 리디렉션을 원하지 않습니다. 내 링크 (mywebsite)를 제외한 모든 외부 링크를 의미합니다. 구글이 좋은 예다. 그래서 나는 $ _GET [ 'url']; 대신 http://google.com. 그렇지? 그러나 그것은 작동하지 않고 여전히 모든 링크를 리디렉션합니다. 심지어 내 자신의 링크까지도 리디렉션합니다. 나는 어떻게해야합니까? 감사합니다. –

+0

@pedramalipour 이러한 외부 링크 중 하나가 나오거나 어디에서 왔는지 보여 줄 수 있습니까? 브라우저에서 어디에서 볼 수 있습니까? – nickhar