数据库驱动的网站动态重定向

时间:2014-03-25 12:46:16

标签: php mysql redirect database-driven

早上好,

我正在开发一个网站,它将从mysql到php动态地比较每个页面上的两件事。例如,让我们说它比较旅行目的地。其中一个页面的示例网址为"http://sometravelwebsite.com/destinations/compare/New-York-City-vs-Tokyo"

编写php的方式,城市的顺序无关紧要。如果输入

../New-York-City-vs-Tokyo

您将获得与输入相同的信息

../Tokyo-vs-New-York-City 

唯一的区别是哪个城市的信息在左侧,哪个城市的信息在右侧。

对于搜索引擎优化目的,如果只有一个版本的页面,其他网址重定向到主网址(例如../New-York-City-vs-Tokyo是由Google编制索引的主网址,但是如果输入其他网址:../Tokyo-vs-New-York-City,301重定向到主网址。

我的问题是:这可以动态完成吗?

我唯一能想到的是在mysql数据库中使用自动增量索引,并始终在左侧放置索引编号较低的城市,在右侧放置索引编号较高的城市。

那就是说,如果我能控制哪个城市位于页面的哪一侧,我更愿意。虽然我不打算通过决定哪个城市在哪个方面进行比较(这会增加更多的城市会变得疯狂),但我想控制其中一些城市以便放置在页面左侧首先看到的具有更理想特征的城市(假设个人从左到右阅读)。

有人能想到通过php,mysql,.htaccess或其他方式动态执行此操作的更好方法吗?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

创建和数组类似

$allowed_left = array('New York City','Milan', 'London');

然后测试左侧是否允许city1并且如果为真,则重定向到"反向url"通过交换周围的城市

if ($city1 != in_array($allowed_left) ){
   if ($city2 != in_array($allowed_left)){
      header("Location: http://sometravelwebsite.com/destinations/compare/not_allowed.php"); 
   }
   else {
      header("HTTP/1.1 301 Moved Permanently"); 
      header("Location: http://sometravelwebsite.com/destinations/compare/".$city2."-vs-".$city1);
   }
}

这显然假设其中一个城市将被允许在左侧,否则如果它们都不在允许的列表中,您可能会以无限循环结束。

答案 1 :(得分:0)

动态PHP处理两者但是如果它们来自搜索引擎你想要重定向吗?坚持一个简单的命名约定或总是按字母顺序排序或以你不会有单独变化的方式排序。我确定谷歌不会介意它的' A Vs B'或者' B对A'我确定如果对搜索有用,它将同样返回。

您可以将效果更好的对象放在左侧。始终按字母顺序创建网址,将2个城市(或更多)放入array and sort alphabetically。至于在页面上显示,查询您的数据库并根据计算的'分数从左到右显示它们(在您的MySQL声明中排序)。你认为会转换得更高的那个。