2010-05-11 2 views
1

내 사이트는 현재 사이트에서 수집되는 데이터를 기반으로하여 http 및 https 섹션을 사용합니다 (양식 데이터는 https를 사용함).HTTPS로 갈 때 URL 끝에 더블 슬래시가 있습니까?

<?php 
    session_start(); 
    ob_start(); 
    if($_SERVER['SERVER_PORT'] == 443) { 
     header('Location:http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])); 
     die(); 
    } 
?> 

그러나 페이지가로드되지 않습니다 내가 404 오류가 발생합니다 : 내 인덱스 페이지에서

, 나는 상단에 PHP 코드를 가지고있다. 내가 HTTPS 보안 헤드 코드를 사용하여 섹션을 방문 할 때 마찬가지로 :

<?php 
session_start(); 
ob_start(); 
    if($_SERVER['SERVER_PORT'] == 80) { 
     header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF'])); 
     die(); 
    } 
?> 

이 사이트는 응답과 어떤 이유로 http에서 https로 전환 이중 슬래시를 생성하지 않습니다.

예 : http://www.abc.com/, 다음 경로를 보여줍니다 http://www.abc.com//enroll.php

을 enroll.php하도록한다 버튼을 클릭 왜 사람이 404 오류가 도울 수있는 이중 슬래시의 필요성과?

답변

2

dirname()은 반드시 전체 디렉토리가 아니기 때문에 PHP_SELF에서 작동하지 않습니다.

dirname("/enroll.php")은 빈 문자열을 올바르게 반환하므로 double //이됩니다.

정확히 무엇을하려고합니까?

+0

글쎄 - 나는 다른 사이트에서 '정확한'동일한 공식을 가지고 있으며 작동하지 않습니다 (www.aabbenefits.com 참조 - 문의하기를 클릭하면 https로 리디렉션되고 이중 슬래시가 표시됨) 왜이 사이트는 오작동합니다. 보안 페이지에 https가 필요한 반면 내 비보안 페이지는 http에 머물고 싶습니다. 지불 및 SSL 정보를 수집하는 보안 페이지에서 양식을 사용하고 있습니다. – JM4

+0

@J M URL을 작성하는 데 사용하는 방법에 결함이있는 것입니다 (404 이유와 상관없이). 당신은'$ _SERVER [ "REQUEST_URI"]'를 시도 했습니까? –

+0

아직 아닙니다 - 사과드립니다. 나는 매우 발전하지 않았으므로 $ _SERVER [ "REQUEST_URI"]로 대체 할 것을 제안합니다. 질문의 페이지 중간에 간단한 'echo'문을 실행할 때 : 단순히 슬래시로 반환됩니다/ – JM4

관련 문제