Products
96SEO 2025-09-23 11:35 1
织梦系统作为国内主流的内容管理系统之一,因其强大的功能和灵活的模板机制被广泛使用。因为移动互联网的兴起, 织梦系统也逐渐加强了对手机站点的支持,通常采用独立的手机模板目录,并通过自动跳转实现PC端与手机端之间的无缝切换。
只是 在实际运营中,不少用户反馈遇到了一级目录域名下list.php页面无法正确跳转到手机站的问题。具体表现为, 当用户用手机访问一级目录下的list.php时页面仍然显示PC端内容,没有跳转到对应的手机端模板页面。这不仅严重影响了用户体验,也不利于移动端SEO优化和网站流量转化。
问题影响:
DedeCMS默认采用不同目录存放PC与手机版本,如PC版在根目录,手机版在/m/子目录。跳转通常依靠以下两种方式实现:
*该段代码示例用于检测是否为移动设备, 是则重定向至/m/list.php,即手机版列表页。
不少开发者未在一级目录下list.php中添加或正确调用移动端跳转逻辑,导致无论何种设备访问均加载PC模板内容。
/m/list.php不存在或者权限异常, 会使得重定向后的页面无法正常响应,从而表现为“无法跳转”或者报错现象。
dedesql.class.php中的防注入机制可能误判正常请求为攻击行为, 阻止施行后续代码,造成跳转失败或Request Error提示。
DedeCMS栏目启用二级域名后 如果未做好统一管理,则原URL和二级域名都可访问相同内容且路由混乱,会影响自动识别并调取正确手机端页面路径。
# 开启RewriteEngine
RewriteEngine On
# 强制移动设备访问自动301重定向到/m/
RewriteCond %{HTTP_USER_AGENT} "iphone|ipad|android|windows phone|mobile|blackberry"
RewriteRule ^list\.php$ /m/list.php
# 设置默认首页优先顺序
DirectoryIndex index.php index.html index.htm
/m/list.php, /m/common.inc.php, /m/index.html等核心文件存在且具有合适权限,防止因权限不足导致打不开网页;特别是common.inc.php必须保持最新版本一致性;
/m/list.php?typeid=xxx
,若能正常渲染对应栏目列表即表示无误。若报错,请查看日志定位具体原因。
dedesql.class为了防止SQL注入加入了严格过滤, 但过度严格会拦截包含特殊字符参数请求,影响jump等功能运行。建议如下处理:
/include/dedesql.class.php
,找到构造函数处, 定位isSafeCheck相关逻辑,如有必要暂时关闭平安检查做验证测试:
// 原始平安检测代码片段示例
if){
die;
}
// 临时注释该段验证测试:
// if){
// die;
// }
{{----}}
{{----}}
{{----}}
{{----}}
{{----}}
{{----}}
--}}
-----
--}}
-临时关闭验证,有助于确认是否因防注入功能引发错误,再根据情况调整正则表达式宽松程度或升级程序版本。
注意:生产环境禁止长期关闭平安措施,应结合日志分析制定精准白名单策略。
Demand feedback