我正在尝试从此网址进行规范重定向
www.mysite.com/page.php?id=1&title=aaa
对此:www.mysite.com/1_aaa
我写了这个函数:
function canonicalRedirect($url)
{
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'GET')
{
$canonical = $url;
if (!preg_match('/'.str_replace('/','\/',$canonical).'/', $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']))
{
header('HTTP/1.0 301 Moved');
header('Cache-Control: no-cache');
header("Location: $canonical");
}
}
}
在page.php中我输入了这段代码:
canonicalRedirect($url);
从MySQL查询中检索$ url变量。但是,当我尝试运行它时,我收到此错误(我正在使用Firefox):页面未正确重定向
我认为该页面是自动重定向的,但我该如何解决这个问题呢?感谢
答案 0 :(得分:0)
您的函数中未定义变量$canonicalURL
,导致重定向的空位置
答案 1 :(得分:-1)
最后我设法解决了我的问题。我重写了我的功能:
function canonicalRedirect($url)
{
//Check that there is not query string in the url
if(preg_match('/\?/', $_SERVER["REQUEST_URI"])) {
header('HTTP/1.0 301 Moved');
header('Cache-Control: no-cache');
header("Location: $url");
}
}
然后在page.php代码中我写了这个:
// code to retrieve the canonical url from MySQL
// $row is the array with the url data and $canonicalurl is obviously the canonical url
if($_GET['title'] != $row['url_title']) {
header("HTTP/1.1 301 Moved");
header('Status: 301 Moved Permanently', true);
header("Location: ".$canonicalurl."",TRUE,301);
}
else {
}
canonicalRedirect($canonicalurl);
再见!