我在一个网站,将比较两件事在每个页面上动态从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);
}
}
这显然是假设其中一个城市在左边是允许的,否则如果它们都不在允许的列表中,您可能会陷入无限循环。