2011-07-25 59 views
1

当用户在我的网站上进行搜索,并且只有一个条目时,我想将用户重定向到搜索结果。目前我这样做的方式很差。以下是我目前的工作方式:重定向到单个搜索结果?

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

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

有没有更好的方法来做到这一点?

+0

我们需要一些额外的信息。您使用的是哪种CMS软件?你可以读写PHP吗?因为那将是最好的地方。 – Johan

回答

3

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

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

只需要注意,使用[Location:]标题时,请使用[完整站点位置](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30)。 –

1

你应该使用PHP来确定是否存在只有一个结果,然后做一个服务器端重定向,像这样:

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

之前打印任何页面,查看是否有只有一个结果,如果是的话,渲染该脚本并退出,以便其他任何事情都得不到处理。

1
<?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=.......){ 

    } 
} 
?> 
1

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

首先,您将要预处理您的查询并检查相关信息;如果有一个结果,请使用前面提到的header();重定向。您可能需要向结果集(数据库表)添加更多信息以使其成为可能。

我认为,如果再进一步,也会自动重定向某些条款。一石二鸟你会杀死两只鸟。

比方说,您有一个数据库是termurl - 您可以在列表中添加某些条款以作为重定向。这对于某些有变化的关键字非常有用。谨慎使用这一点 - 与您的网站统计数据结合使用会很好。它可以帮助你在显示0条记录的情况下。