2012-09-14 4 views
-3

어떤 이유로 일부 사용자/브라우저가 잘못된 페이지로 리디렉션됩니다.PHP 헤더 리디렉션이 제대로 작동하지 않습니다.

http://www.site.com/page.php/http://www.site.com/page.php

대신 :

http://www.site.com/page.php

는 이유입니다 그들은으로 전송받을?

ps. 나는 MOD_REWRITE를 사용하고 있습니다. 이것은 변화를 가져올 것입니까?

리디렉션 기능 : $urlhttp와 그렇다면 시작하면 검사가 볼 경우

function KT_redir($url) { 
    $protocol = "http://"; 
    $server_name = $_SERVER["HTTP_HOST"]; 
    if ($server_name != '') { 
     $protocol = "http://"; 
     if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == "on")) { 
      $protocol = "https://"; 
     } 
     if (preg_match("#^/#", $url)) { 
      $url = $protocol.$server_name.$url; 
     } else if (!preg_match("#^[a-z]+://#", $url)) { 
      $script = KT_getPHP_SELF(); 
      if (isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] != '' && $_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) { 
       $script = substr($script, 0, strlen($script) - strlen($_SERVER['PATH_INFO'])); 
      } 
      $url = $protocol.$server_name.(preg_replace("#/[^/]*$#", "/", $script)).$url; 
     } 
     $url = str_replace(" ","%20",$url); 
     if (KT_is_ajax_request()) { 
      header("Kt_location: ".$url); 
      echo "Redirecting to: " . $url; 
     } else { 
      header("Location: ".$url); 
     } 
    } 
    exit; 
} 

mod_rewrite를 당신의 else if (!preg_match) 전에

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www\.site\.com$ [NC] 
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L] 
+4

코드를 입력하십시오. 우리는 그것 없이는 디버그 할 수 없다. – Daedalus

+0

다시 쓰기 부분과 관련하여 .htaccess 파일의 내용을 표시하십시오. – jtheman

+0

이것을 제어하는 ​​10 억 개의 함수가있는 dreamweaver 확장을 사용하는 사람 : –

답변

0

, 당신은 다른 추가하지 않습니다 필요 아무것도 추가하십시오.

관련 문제