对单个搜索结果进行重定向


Redirecting on a single search result?

当用户在我的网站上进行搜索时,只有一个条目,然后我想将用户重定向到搜索结果。我现在做这件事的方法很糟糕。以下是我目前的做法:

如果在搜索结果页面上只有一个搜索结果,那么我呈现一个隐藏的输入,ID为"redirect",值为要重定向到的链接。在javascript中,如果存在ID为"redirect"的隐藏输入,则用户将被重定向到元素的值。

这是一种糟糕的方法,因为首先加载的是单个搜索结果,所以用户实际上看到的是一个搜索结果。然后,它在3秒后加载。

有更好的方法吗?

如果只有一个结果,可以使用header() PHP函数进行重定向。

header("Location: http://www.example.com/");

您应该使用PHP来确定是否只有一个结果,然后执行服务器端重定向,如下所示:

header( 'Location: http://www.yoursite.com/redirect_page.html' );
exit;

在打印任何内容到页面之前,检查是否只有一个结果,如果是,则呈现该脚本并退出,以便不处理任何其他内容。

<?php 
//Query & other stuff
$num_of_results=mysql_num_rows($result);
if($num_of_results==0){
    //no results
}elseif($num_of_results==1){
    //only 1 result
    //pseudo-code
    //get id or controller ect from result set
    header('Location: ./page/'.$id);
    die();
}else{
    //normal display of search results
    while($row=.......){
    }
}
?>

您的逻辑问题是,您正在等待页面中的某些内容加载然后重定向。我认为一个更优雅的解决方案是改变事情的流程,给你更多的灵活性。

首先,你需要预处理你的查询并检查相关信息;如果有一个结果,则使用前面提到的header();重定向。您可能需要向结果集(数据库表)添加一些更多的信息来实现这一点。

我认为更进一步,可以自动重定向某些术语。你会一举两得的。

假设你有一个数据库是termurl -你可以添加某些术语的列表,也作为重定向。这对于存在变化的某些关键字非常有用。不过要谨慎地使用它——它与你的站点统计数据结合使用是很好的。在显示0条记录的情况下,它可能会对您有所帮助。