product_info短地址强制重写

用于收藏精华贴子、网友共享的资料等。可以回复,不能发新贴。

版主: daimadaquan

版面规则
本版面不能发新贴,可以回复

product_info短地址强制重写

帖子zbdehs » 2010-04-15 11:43

用了seo_url后做的伪静态页面里的
我们模仿lightinthebox的product_info里做了短地址跳转
但是发现除了短地址外,还有其他地址,只要后缀为-p-id.html这样的都能跳转
这样的话会出现多个URL对应同一个页面,导致GOOGLE认为你作弊被KICK

自己写了个东西
$jn_uri="";
$jn_uri1=$_SERVER["REQUEST_URI"];
$jn_uri2=str_replace("/","",$jn_uri1);
$jn_url=split("-",$jn_uri2);
$jn_id=(int)ereg_replace("/[^0-9]*/","",str_replace(".html","",$jn_url[sizeof($jn_url)-1]));
$jn_uri=HTTP_SERVER."/".strtolower(str_replace(" ","-",zen_get_products_name($jn_id)))."-p-".$jn_id.".html";
//echo $jn_uri2;
if ((!preg_match("/^".strtolower(str_replace(' ','-',zen_get_products_name($jn_id)))."-p-[0-9]+\.html$/",$jn_uri2)) &&(!preg_match("/^index.php/",$jn_uri2))){
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: $jn_uri");
exit();
}

丢到product_info的模型层里就可以了
zbdehs
新手上路
新手上路
 
帖子: 9
注册: 2010-03-11 17:45
QQ 帐号: 1098495439

Re: product_info短地址强制重写

帖子快站宝 » 2010-04-18 22:06

问题是非原地址的其它地址,本身不会出现。
快站宝
高级会员
高级会员
 
帖子: 162
注册: 2010-03-13 22:15
QQ 帐号: 1425497652

Re: product_info短地址强制重写

帖子zbdehs » 2010-04-19 8:46

不是啊,我们做了短地址COPY了,直接给用户使用的,而且怕人用工具随机加字符乱刷站点,导致收入错乱
必须的
不能相信客户的输入,必须的
zbdehs
新手上路
新手上路
 
帖子: 9
注册: 2010-03-11 17:45
QQ 帐号: 1098495439

Re: product_info短地址强制重写

帖子zbdehs » 2010-04-22 11:12

$jn_uri="";
$jn_uri1=$_SERVER["REQUEST_URI"];
$jn_uri2=str_replace("/","",$jn_uri1);
$jn_url=split("-",$jn_uri2);
$jn_id=(int)ereg_replace("/[^0-9]*/","",str_replace(".html","",$jn_url[sizeof($jn_url)-1]));
$jn_uri=HTTP_SERVER."/".strtolower(str_replace("/","",(str_replace(" ","-",(str_replace("-","",zen_get_products_name($jn_id)))))))."-p-".$jn_id.".html";
//echo $jn_uri;

if ((!preg_match("/^".strtolower(str_replace("/","",(str_replace(" ","-",(str_replace("-","",zen_get_products_name($jn_id)))))))."-p-[0-9]+\.html$/",$jn_uri2)) &&(!preg_match("/^index.php/",$jn_uri2))){
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: $jn_uri");
exit();
}


重新弄了下,原来的那个版本如果产品名称包含/会造成重定向错误
这个版本修复了
zbdehs
新手上路
新手上路
 
帖子: 9
注册: 2010-03-11 17:45
QQ 帐号: 1098495439

Re: product_info短地址强制重写

帖子zbdehs » 2010-04-22 13:44

最终版本
第二版直接过滤了"/"号,导致如果用户恶意加/不会跳转
直接用substr获得没有/的地址就可以了

注意,这个版本对应规则是"/" "-"全部用""替换,在吧空格替换成"-" ,使用前请看下你们自己站的重写规则,如果不是请自己修改下下面的正则,因为是严格比较,如果规则不统一,会遭成循环重定向的!

$jn_uri="";
$jn_uri1=$_SERVER["REQUEST_URI"];
//$jn_uri2=str_replace("/","",$jn_uri1);
$jn_uri2=substr($jn_uri1,1);
$jn_url=split("-",$jn_uri2);
$jn_id=(int)ereg_replace("/[^0-9]*/","",str_replace(".html","",$jn_url[sizeof($jn_url)-1]));
$jn_uri=HTTP_SERVER."/".strtolower(str_replace("/","",(str_replace(" ","-",(str_replace("-","",zen_get_products_name($jn_id)))))))."-p-".$jn_id.".html";


if ((!preg_match("/^".strtolower(str_replace("/","",(str_replace(" ","-",(str_replace("-","",zen_get_products_name($jn_id)))))))."-p-[0-9]+\.html$/",$jn_uri2)) &&(!preg_match("/^index.php/",$jn_uri2))){
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: $jn_uri");
exit();
}
zbdehs
新手上路
新手上路
 
帖子: 9
注册: 2010-03-11 17:45
QQ 帐号: 1098495439

Re: product_info短地址强制重写

帖子yiyunet » 2010-06-22 12:26

好象不错。。回家试试。。。
yiyunet
高级会员
高级会员
 
帖子: 198
注册: 2009-07-14 0:21

Re: product_info短地址强制重写

帖子seoerchen » 2010-06-23 11:18

看来要好好学习了
seoerchen
中级会员
中级会员
 
帖子: 50
注册: 2010-05-15 1:41

Re: product_info短地址强制重写

帖子qvbfndcwy » 2010-12-03 18:44

zbdehs 写道:丢到product_info的模型层里就可以了

晕,怎么丢进去,是哪个文件?
qvbfndcwy
普通会员
普通会员
 
帖子: 27
注册: 2010-08-02 17:20
QQ 帐号: 250879573

Re: product_info短地址强制重写

帖子vincent.xm » 2010-12-04 16:13

qvbfndcwy 写道:
zbdehs 写道:丢到product_info的模型层里就可以了

晕,怎么丢进去,是哪个文件?


别人高手说话,我们在旁边看看就行.哈哈.
头像
vincent.xm
中级会员
中级会员
 
帖子: 99
注册: 2009-10-25 20:37


回到 精华共享

在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客