2012-09-14 114 views
-3

由于某种原因,某些人/浏览器重定向到了错误的页面。他们会发送到:的php header重定向无法正常工作

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

代替:

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

这是为什么?

Ps。我使用MOD_REWRITE。这会有所作为吗?

重定向功能:

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的

RewriteEngine on 

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

给我们您的代码。没有它我们不能进行调试。 – Daedalus

+0

向我们展示您的.htaccess文件关于重写部分的内容。 – jtheman

+0

我正在使用一个拥有十亿个函数的dreamweaver扩展,它控制着这个 : –

回答

0

else if (!preg_match)之前,您需要到别的添加如果看到检查是否$url始于http,如果是这样,不追加任何东西。