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


Database driven website dynamic redirect

早上好

我在一个网站,将比较两件事在每个页面上动态从mysql通过php。举个例子,让我们说它比较旅游目的地。其中一个页面的url示例是"http://sometravelwebsite.com/destinations/compare/New-York-City-vs-Tokyo"

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

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

您将得到与输入

相同的信息
../Tokyo-vs-New-York-City 

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

出于搜索引擎优化的目的,最好只有一个版本的页面,另一个url重定向到主url(例如../New-York-City-vs-Tokyo是谷歌索引的主url,但如果输入另一个url: ../Tokyo-vs-New-York-City,它301重定向到主url)。

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

我唯一能想到的就是在mysql数据库中使用一个自增索引,总是把索引号低的城市放在左边,索引号高的城市放在右边。

也就是说,我希望我能控制页面的哪一侧是哪个城市。虽然我不打算通过并决定哪个城市在哪一边进行每一个比较(这将变得疯狂的城市被添加),我想要控制其中的一些,以便将更理想的特征的城市放在页面的左侧,它将首先被看到(假设个人从左到右阅读)。

谁能想到一个更好的方式来做这个动态通过php, mysql,。htaccess或任何其他方式?

任何帮助都将非常感激!

动态PHP处理这两个,但如果他们来自搜索引擎你想重定向?坚持一个简单的命名约定,或者总是按照字母顺序排列它们,这样你就不会有单独的变化。我相信谷歌不会介意是"A Vs B"还是"B Vs A",我相信如果对搜索有用,它会同样返回这两个。

你可以把表现较好的对象放在左边。使URL始终按字母顺序排列,将2个城市(或更多)放入数组并按字母顺序排序。至于在页面上显示,查询你的数据库,并显示他们从左到右(排序在你的MySQL语句)基于计算的"得分"的一个你认为会转换更高。

创建一个类似

的数组
$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);
   }
}

这显然是假设其中一个城市在左边是允许的,否则如果它们都不在允许的列表中,您可能会陷入无限循环。