当用户在我的网站上进行搜索时,只有一个条目,然后我想将用户重定向到搜索结果。我现在做这件事的方法很糟糕。以下是我目前的做法:
如果在搜索结果页面上只有一个搜索结果,那么我呈现一个隐藏的输入,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();
重定向。您可能需要向结果集(数据库表)添加一些更多的信息来实现这一点。
我认为更进一步,可以自动重定向某些术语。你会一举两得的。
假设你有一个数据库是term
和url
-你可以添加某些术语的列表,也作为重定向。这对于存在变化的某些关键字非常有用。不过要谨慎地使用它——它与你的站点统计数据结合使用是很好的。在显示0条记录的情况下,它可能会对您有所帮助。