Destoon怎么解决伪静态中文搜索出现403错误_http403错误解决方案
Destoon怎么解决伪静态中文搜索出现403错误由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“http403错误解决方案”。
Destoon怎么解决伪静态中文搜索出现40
3错误
由于apache 的url rewrite 组件在传递参数的时候会自动进行urldecode解码,所以会出现搜索结果列表页出来后,翻页、相关搜索的伪静态地址搜索关键字部分变成为url编码的中文,这时候再点击下一页或相关搜索链接会报403错误,解决办法是对传递参数进行2次编码,即urlencode(urlencode(关键字)),但是destoon中发现此方法不可行,使用此方法在第三次翻页的时候就失效,网上说在.htacce中添加[NE]或[NU]参数,均无效,[NE]失效原因未明,[NU]失效是apache的rewrite无此参数,网上说可行都是iis的rewrite组件,最后得出两个解决办法:
1、destoon后台网站设置的seo优化关闭伪静态(4.0以上版本不能单独对搜索也进行伪静态设置),其他模块因为还选择伪静态,所以此设置后不影响对大部分模块进行伪静态,但是会员商家的主页会无法实现伪静态。
2、修改代码,针对伪静态页面添加排除条件,即对出现“search.php”的页面不进行伪静态,修改地方如下:
include/global.func.php中pages函数(翻页)
找到 “if(defined('DT_REWRITE')&& $_SERVER[”SCRIPT_NAME“])” 添加排除条件,修改后如下:
$DT['rewrite']
&&
“ if(defined('DT_REWRITE')&& $DT['rewrite'] && $_SERVER[”SCRIPT_NAME“] && strpos($_SERVER['PHP_SELF'], 'search.php')===false && strpos($_SERVER['PHP_SELF'], 'price.php')===false)”
include/global.func.php中rewrite函数(伪静态)
找到 “if(strpos($url, '.php?')=== false || strpos($url, '=')=== false)return $url;” 条件,修改后如下:
添加排除
“ if(strpos($url, '.php?')=== false || strpos($url, '=')=== false || strpos($_SERVER['PHP_SELF'],'search.php')!==false
&& strpos($_SERVER['PHP_SELF'], 'price.php')!==false)return $url;” 此两次修改之后,搜索页及相关搜索不使用伪静态,而其他模块包括商家主页可以继续使用伪静态
详细可以参考商务蜜蜂资讯网:http://www.daodoc.com