Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据库驱动的网站动态重定向_Php_Mysql_Redirect_Database Driven - Fatal编程技术网

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

Php 数据库驱动的网站动态重定向,php,mysql,redirect,database-driven,Php,Mysql,Redirect,Database Driven,早上好 我在一个网站上工作,该网站将通过php动态比较mysql中每个页面上的两个内容。举个例子,让我们来比较一下旅游目的地。其中一个页面的url示例如下http://sometravelwebsite.com/destinations/compare/New-York-City-vs-Tokyo php的编写方式,城市的顺序并不重要。如果你进去 ../New-York-City-vs-Tokyo 您将获得与输入相同的信息 ../Tokyo-vs-New-York-City 唯一的区别是哪

早上好

我在一个网站上工作,该网站将通过php动态比较mysql中每个页面上的两个内容。举个例子,让我们来比较一下旅游目的地。其中一个页面的url示例如下http://sometravelwebsite.com/destinations/compare/New-York-City-vs-Tokyo

php的编写方式,城市的顺序并不重要。如果你进去

../New-York-City-vs-Tokyo
您将获得与输入相同的信息

../Tokyo-vs-New-York-City 
唯一的区别是哪个城市的信息在左边,哪个城市的信息在右边

出于SEO目的,如果页面只有一个版本会更好,另一个url重定向到主url,例如./纽约市vs东京是Google索引的主url,但如果输入另一个url:../东京vs纽约市,则会301重定向到主url

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

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


也就是说,我更希望我能控制哪座城市在页面的哪一边。虽然我不打算通过每一次比较来决定哪座城市站在哪一边,这会让更多的城市变得疯狂,我希望能够控制其中的一些,以便将具有更理想特征的城市放在页面左侧,假设个人从左到右阅读,首先可以看到这些城市

有谁能想出一个更好的方法来通过php、mysql、.htaccess或其他任何方式动态地实现这一点

任何帮助都将不胜感激

创建类似数组的

$allowed_left = array('New York City','Milan', 'London');
然后测试左侧的city1是否不允许,如果为true,则通过交换周围的城市将其重定向到反向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);
   }
}

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

动态PHP处理这两个城市,但如果它们来自搜索引擎,您希望重定向吗?坚持一个简单的命名约定,或者总是按字母顺序排列,这样就不会有单独的变体。我相信谷歌不会介意它的“A Vs B”或“B Vs A”,我相信如果对搜索有用的话,它会同时返回这两个词


您可以将性能更好的对象放在左侧。使URL始终按字母顺序排列,将2个或更多城市放入。至于在页面上显示,查询数据库,并根据您认为会转换得更高的数据库的计算“分数”在MySQL语句上从左到右排序。

这没有意义,动态PHP处理这两个问题,但如果它们来自搜索引擎,您希望重定向吗?坚持一个简单的命名约定,或者总是按字母顺序排列,这样就不会有单独的变体。我相信谷歌不会介意它的“A Vs B”或“B Vs A”,我相信如果对搜索者有用的话,它会同时返回这两个城市。如果这真的是你想要的,那你为什么还要担心城市在url中的顺序呢?只需为每个查询的城市提取信息,使用您定义的任何指标确定哪个更可取,并根据排名显示它们。您好@Mattheninja感谢您的回复。如果我不清楚,我道歉。我不是说如果它们来自搜索引擎,我需要重定向,只是我只希望搜索引擎对其中一个页面进行索引。我应该提到的是,人们访问这些页面的一种方式是通过一个带有两个文本框的表单,这样他们就可以在搜索中输入纽约市对东京或东京对纽约市。我想让它们按字母顺序出现是有道理的,但我认为如果有更多优势的城市出现在地图上,页面会转换得更好left@PatrickQ,我担心在搜索引擎优化的原因城市的顺序。如果有人要在社交媒体上共享该页面,或在其他地方链接到该页面,则最好只有两种可能的变体中的一种是链接到的。也许我在那个断言上错了,但那正是我所想的。@will74您仍然可以将性能更好的对象放在左侧。使URL始终按字母顺序排列,将2个或更多城市放入数组并按字母顺序排序。至于在页面上显示,请查询您的数据库,并根据您认为将转换为更高的数据库的计算“分数”从左到右显示。是的,不幸的是,此解决方案将运行无限循环,因为如果我将纽约设置为$allowed\u left,这是可能的,而且很有可能在某个时候有人会想要比较米兰和L
ondon,它创建了您上面提到的问题。谢谢你!只有当城市不允许在左边时,才会发生重定向。比较米兰和伦敦是可行的,因为米兰在允许的范围内,没有交换他们。如果这在上面的例子中是合理的,那么如果你想比较马德里和巴黎,它将进入一个无限循环。因为它们都不在允许的左侧列表中。您可以在if语句中再检查一次,如果city2也不在允许列表中,则转到404页面或您的组合不允许页面。。将编辑解决方案