当用户在我的网站上进行搜索,并且只有一个条目时,我想将用户重定向到搜索结果。目前我这样做的方式很差。以下是我目前的工作方式:重定向到单个搜索结果?
如果在搜索结果页面上只有一个搜索结果,则呈现ID为“重定向”的隐藏输入以及要重定向到的链接值。在javascript中,如果存在具有ID“重定向”的隐藏输入,那么用户将被重定向到元素的值。
这是一个糟糕的方法,因为单个搜索结果首先被加载,所以用户实际上看到有一个搜索结果。然后,例如3秒后加载。
有没有更好的方法来做到这一点?
当用户在我的网站上进行搜索,并且只有一个条目时,我想将用户重定向到搜索结果。目前我这样做的方式很差。以下是我目前的工作方式:重定向到单个搜索结果?
如果在搜索结果页面上只有一个搜索结果,则呈现ID为“重定向”的隐藏输入以及要重定向到的链接值。在javascript中,如果存在具有ID“重定向”的隐藏输入,那么用户将被重定向到元素的值。
这是一个糟糕的方法,因为单个搜索结果首先被加载,所以用户实际上看到有一个搜索结果。然后,例如3秒后加载。
有没有更好的方法来做到这一点?
如果只有1个结果,则可以使用header()PHP函数进行重定向。
header("Location: http://www.example.com/");
只需要注意,使用[Location:]标题时,请使用[完整站点位置](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30)。 –
你应该使用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条记录的情况下。
我们需要一些额外的信息。您使用的是哪种CMS软件?你可以读写PHP吗?因为那将是最好的地方。 – Johan