2012-03-26 1 views
0

HTTP 주소를 참조하는 Rackspace 클라우드 파일 CDN URL이 저장되어 있으며 해당 파일을 HTTPS로 변환하고 싶습니다.Rackspace 클라우드 파일 변환 HTTP에서 HTTPS 로의 CDN URL

랙 스페이스 클라우드 파일 CDN URL은 다음과 같은 형식으로되어 있습니다 :

http://c186397.r97.cf1.rackcdn.com/CloudFiles Akamai.pdf

그리고이 URL에 대한 SSL 동등한은 다음과 같습니다에

https://c186397.ssl.cf1.rackcdn.com/CloudFiles Akamai.pdf

변경 URL은 (source) :

입니다. 617,451,515,
  1. HTTP가된다 HTTPS
  2. 번째 URI 세그먼트 (본 예에서는 'R97')가된다
  3. 'SSL'는 'R00'부분이 약간 ', R6'만큼 (길이 다를 것

등) 이러한 URL을 HTTPS로 변환하는 데 문제가 있습니다. 지금까지 가지고있는 코드는 다음과 같습니다.

function rackspace_cloud_http_to_https($url) 
{ 
    //Replace the HTTP part with HTTPS 
    $url = str_replace("http", "https", $url, $count = 1); 

    //Get the position of the .r00 segment 
    $pos = strpos($url, '.r'); 

    if ($pos === FALSE) 
    { 
     //Not present in the URL 
     return FALSE; 
    } 

    //Get the .r00 part to replace 
    $replace = substr($url, $pos, 4); 

    //Replace it with .ssl 
    $url = str_replace($replace, ".ssl", $url, $count = 1); 

    return $url; 
} 

그러나 두 번째 세그먼트의 길이가 다른 URL에서는 작동하지 않습니다.

모든 의견을 감사드립니다.

답변

1

이 시도 :

function rackspace_cloud_http_to_https($url) 
{ 
    $urlparts = explode('.', $url); 

    // check for presence of 'r' segment 
    if (preg_match('/r\d+/', $urlparts[1])) 
    { 
     // replace appropriate segments of url 
     $urlparts[0] = str_replace("http", "https", $urlparts[0]); 
     $urlparts[1] = 'ssl'; 

     // put url back together 
     $url = implode('.', $urlparts); 
     return $url; 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

방금 ​​테스트 한 결과 다른 길이의 파트로 작동합니다. 고맙습니다. –

+0

건배, 내가 머리 꼭대기에서 쓴 이후에 문법 오류가있을 수 있지만 기쁘다. – jessica

2

을 나는이 오래 알고 있지만,이 라이브러리를 사용하는 경우 : https://github.com/rackspace/php-opencloud 당신이 개체의 getPublicUrl() 메소드를 사용 할 수 있습니다, 당신은 단지 다음 네임 스페이스를 사용할 필요가

use OpenCloud\ObjectStore\Constants as Constant; 

// Code logic to upload file 
$https_file_url = $response->getPublicUrl(Constant\UrlType::SSL);