我的知识记录

网站发布文章别名错误_URL别名重复与格式问题

网站发布错误排查通用流程。发布文章失败时,按以下流程系统排查:1.确认错误现象——a.什么操作时报错(点击保存/发布/更新?保存草稿?定时发布?审核?);b.错误提示是什么(完整复制:『保存失败』『数据库错误』『权限不足』『内容包含违禁词』『文件过大』『403/500』);c.什么时候开始的(一直/最近操作后/升级后/换服务器后);d.影响范围(所有文章/特定栏目/特定内容/特定用户/特定类型);e.是新发布还是编辑旧文章?2.基础检查——a.换浏览器/无痕模式(排除浏览器缓存/插件/扩展干扰,如广告拦截/脚本拦截);b.清浏览器缓存(Ctrl+F5);c.看浏览器F12→Console(JS错误,如编辑器JS报错导致保存按钮失效)、Network(保存请求的状态码/响应内容,看是403/500/200但返回错误信息);d.测试简单内容(发一篇只有标题+几个字的测试文章,能发=内容问题(特殊字符/字数/违禁词/图片),不能发=系统问题(权限/数据库/配置/WAF))。3.检查权限——a.用户角色权限(后台用户是否有发布文章的权限,管理员/编辑/作者权限不同,作者可能只能发草稿不能发布);b.栏目权限(是否有该栏目的发布权限,部分系统按栏目分配权限);c.数据库用户权限(数据库用户是否有INSERT/UPDATE权限,权限不足会保存失败);d.目录权限(上传目录/缓存目录是否可写,见存储错误专题);e.后台登录状态(session过期,登录失效,重新登录测试)。4.检查数据库——a.数据库连接(数据库是否正常连接,其他页面是否正常,见数据库连接错误专题);b.表结构(文章表字段是否完整,升级/迁移后可能缺字段,DESCRIBE 文章表看);c.数据冲突(别名/URL重复,唯一索引冲突,Duplicate entry错误);d.数据库错误(看错误日志,SQL语法错/字段不存在/表损坏);e.数据库连接数(Too many connections,高峰连接满,保存失败)。5.检查内容相关——a.字数限制(内容过长超过数据库字段限制或PHP post_max_size,被截断/保存失败,看字段类型TEXT/LONGTEXT,post_max_size);b.特殊字符(内容含HTML/JS/CSS代码,被程序过滤/转义,导致内容异常或保存失败,检查程序过滤规则,需要的话关闭过滤或用代码高亮插件);c.违禁词/敏感词(内容含违禁词,被程序/WAF拦截,提示『内容包含违规信息』或直接403,检查违禁词库,修改内容,或WAF误拦截加白名单);d.图片/附件(内容含图片/附件,上传失败导致保存失败,见上传错误专题,先上传图片再发布,或检查图片路径);e.格式问题(从Word/网页复制内容,带大量格式/隐藏字符,导致保存失败或乱码,用『清除格式』/纯文本粘贴,再重新排版)。6.检查功能配置——a.栏目设置(栏目是否正常/是否被禁用/是否有子栏目权限,栏目ID是否存在);b.标签系统(标签是否开启/标签表是否正常/标签长度限制);c.SEO设置(SEO标题/关键词/描述字段是否存在/长度限制);d.定时发布(计划任务/cron是否正常运行,服务器时间是否正确,定时发布时间是否已过);e.审核工作流(是否需要审核,审核流程是否配置,用户是否在审核流程中);f.版本控制(多版本功能是否开启,版本表是否正常);g.静态化(是否开启静态化,静态目录权限/生成配置,静态化失败可能发布后不更新);h.推送(百度/搜索引擎推送配置是否正确,API密钥/推送地址,推送失败不影响发布但影响收录)。7.检查WAF/安全软件——a.WAF(云WAF/服务器安全狗/宝塔防火墙)可能拦截发布请求(误判为SQL注入/XSS/恶意提交,特别是内容含HTML/JS/链接时),返回403或拦截页面;b.解决:临时关闭WAF测试(确认是WAF拦截),WAF后台加白名单(发布URL/后台IP),调整WAF规则(降低敏感度/排除后台路径),内容避免触发规则(不要含可疑代码/大量链接);c.注意:不要长期关闭WAF,加白名单后开启。8.检查程序/插件——a.程序bug(程序版本bug,升级到最新版或打补丁);b.插件冲突(编辑器插件/SEO插件/安全插件/自定义字段插件冲突,逐个禁用插件测试,定位冲突插件,更新/替换);c.主题/模板冲突(切换默认主题测试,排除主题函数冲突);d.最近修改(最近改了程序文件/配置/插件,回滚测试)。9.检查服务器环境——a.PHP版本(程序要求的PHP版本,版本过高/过低可能不兼容,phpinfo看,切换PHP版本);b.PHP扩展(mbstring/pdo/mysqlnd/gd/curl等扩展是否安装,缺失会导致功能异常);c.PHP配置(post_max_size/upload_max_filesize/max_execution_time/memory_limit,大内容/大图片需要调大);d.磁盘空间(磁盘满导致数据库写入/缓存/上传失败,df -h,见存储错误专题);e.内存(内存不足导致PHP/OOM,保存失败,free -h,调小内存参数或加内存)。排查顺序:确认现象→基础检查(浏览器/F12/简单内容测试)→权限→数据库→内容相关(字数/特殊字符/违禁词/图片/格式)→功能配置→WAF/安全→程序/插件→服务器环境。90%的发布错误是权限/内容(特殊字符/违禁词/字数)/WAF拦截/数据库问题,先查这些。

常见发布错误详解与解决。1.保存失败/提示错误(最常见)——a.现象:点击保存/发布后提示『保存失败』『发生错误』『数据库错误』,文章没保存;b.排查:F12→Network看保存请求的响应(状态码+返回内容,通常有具体错误信息),看程序错误日志(PHP/数据库错误),测试简单内容(几个字能不能发);c.常见原因:数据库连接失败/表缺字段/数据冲突(别名重复)/权限不足/WAF拦截/内容含违禁词/PHP超时/磁盘满;d.解决:根据错误信息对应解决(数据库错→检查连接/表结构,权限→检查用户角色/数据库权限,WAF→加白名单,违禁词→修改内容,超时→调大max_execution_time,磁盘满→清理空间)。2.内容空白/丢失——a.现象:保存后文章内容为空,或部分内容丢失(后半段没了);b.原因:字数超限(内容超过数据库字段限制,如TEXT最大64K,超过被截断,用LONGTEXT)、post_max_size太小(大内容POST被截断,调大post_max_size)、特殊字符(内容含NULL字节/非法字符,被过滤)、编辑器bug(富文本编辑器提交时内容丢失,更新编辑器/换编辑器)、XSS过滤(程序过滤了HTML标签,内容被清空,检查过滤规则)、浏览器插件(翻译插件/广告拦截修改了表单内容,禁用插件测试);c.解决:数据库字段改LONGTEXT(ALTER TABLE 文章表 MODIFY content LONGTEXT),调大post_max_size,用纯文本测试排除内容问题,更新编辑器,检查程序过滤规则,禁用浏览器插件测试。3.发布乱码——a.现象:保存后文章内容中文变问号/乱码/方块;b.原因:数据库字符集不对(表/字段不是utf8mb4,中文存进去变问号)、连接字符集不对(PHP连接数据库没SET NAMES utf8mb4,写入时乱码)、PHP文件编码(程序文件不是UTF-8无BOM,字符串常量乱码)、编辑器编码(富文本编辑器提交编码不对)、从Word复制带特殊编码字符;c.解决:数据库/表/字段统一utf8mb4(ALTER TABLE CONVERT TO CHARACTER SET utf8mb4),PHP连接后SET NAMES utf8mb4,程序文件转UTF-8无BOM,从Word复制先用『清除格式』,已乱码的数据(问号)无法恢复重新录入,双重编码可修复(见乱码专题)。4.图片不显示/上传失败——a.现象:文章中图片上传失败,或发布后图片裂图/不显示;b.原因:上传目录权限(不可写,chmod 755/chown)、上传大小限制(PHP upload_max_filesize/Nginx client_max_body_size太小,大图片传不上)、图片格式不允许(程序只允许jpg/png/gif,webp/svg被拒,转换格式或配置允许)、图片路径错(相对路径/域名错,发布后路径不对,用绝对路径或程序变量)、防盗链(图片域名被防盗链拦截,加白名单)、HTTPS混合内容(HTTPS页面加载HTTP图片被拦截,改HTTPS)、CDN缓存(CDN缓存了旧的/没同步新图片,刷新CDN);c.解决:见图片错误/存储错误专题,先确认图片能单独上传(上传到服务器,URL能访问),再插入文章,用绝对路径或程序自带的上传功能(不要手动写相对路径)。5.封面图/缩略图失败——a.现象:文章封面图上传失败,或列表页缩略图不显示/变形;b.原因:GD库没装(PHP没装GD扩展,无法生成缩略图,phpinfo看gd,安装php-gd)、图片太大(内存不足无法生成缩略图,调大memory_limit或压缩图片)、缩略图目录权限(不可写,chmod)、缩略图尺寸配置(后台缩略图尺寸设置不合理,生成失败/变形,调整尺寸)、图片格式(GD不支持webp等格式,转换为jpg/png)、水印功能(开启水印但水印图不存在/字体不存在,生成失败,检查水印配置);c.解决:安装GD扩展,调大memory_limit,检查缩略图目录权限,配置合理缩略图尺寸,用jpg/png格式,检查水印配置。6.栏目/分类错误——a.现象:发布时选不了栏目,或发布到错误栏目,或栏目下不显示文章;b.原因:栏目被禁用/删除(后台栏目管理看是否正常,恢复/重建)、用户无栏目权限(按栏目分配权限的系统,用户没有该栏目权限,分配权限)、栏目ID错(模板/程序中栏目ID写错,检查配置)、栏目模型不匹配(文章模型和栏目模型不一致,无法发布,调整栏目模型)、栏目绑定域名(子域名栏目,跨域发布问题,检查域名配置);c.解决:检查栏目状态/权限/ID/模型,恢复被删栏目,分配用户权限,修正模板栏目ID。7.标签/Tag错误——a.现象:标签保存失败,或标签不显示/重复;b.原因:标签表损坏/缺字段(升级后,检查标签表结构)、标签长度限制(标签太长被截断,调整字段长度)、标签分隔符(中文逗号/全角分隔符不识别,用英文逗号)、标签功能未开启(后台没开启标签功能,开启)、标签缓存(标签缓存没更新,清缓存);c.解决:检查标签表结构,用英文逗号分隔,开启标签功能,清缓存,调整字段长度。8.SEO设置失败——a.现象:SEO标题/关键词/描述保存失败,或不生效;b.原因:SEO字段不存在(程序版本没SEO功能/升级后缺字段,检查文章表SEO字段)、字段长度限制(SEO标题/描述太长被截断,调整字段长度,SEO标题建议<30字,描述<80字)、SEO插件冲突(多个SEO插件冲突,禁用多余的)、模板没调用SEO标签(模板header中没输出SEO标题/描述,检查模板header.html,加{seo_title})、缓存(页面缓存没更新,清缓存);c.解决:检查SEO字段,控制长度,禁用冲突插件,模板调用SEO标签,清缓存。9.定时发布失败——a.现象:设置了定时发布但到时间没发布,或发布时间不对;b.原因:计划任务/cron没配置(定时发布依赖cron访问触发URL,没配置cron就不会触发,配置crontab每分钟访问触发地址)、cron没运行(服务器cron服务没启动,service cron status,启动)、服务器时间错(服务器时间和实际时间差太多,date看,校正时间NTP)、定时时间已过(设置的发布时间已经过去了,程序不会发布,改未来时间)、文章状态(定时发布的文章状态是『定时』而不是『已发布』,检查状态)、缓存/静态化(静态化网站定时发布后没重新生成静态页,配置发布后自动生成);c.解决:配置cron(* * * * * curl https://域名/cron/task),启动cron服务,校正服务器时间,设置未来时间,检查文章状态,静态化配置自动生成。10.审核失败——a.现象:文章提交审核后没通过,或审核流程卡住;b.原因:审核工作流没配置(没设置审核人/审核流程,配置审核流程)、用户无审核权限(审核人没有审核权限,分配权限)、审核通知没发(审核人没收到通知,检查邮件/站内通知配置)、多级审核卡住(上一级没审核,下一级无法操作,联系上一级审核)、文章被驳回(审核人驳回了,看驳回原因修改后重新提交);c.解决:配置审核工作流,分配审核权限,检查通知配置,联系审核人,根据驳回原因修改。

WAF拦截、字数限制、特殊字符、附件/视频、分页、别名、静态化、推送。1.WAF/安全软件拦截——a.现象:点击发布后返回403/拦截页面/『请求不合法』,或内容被截断,简单内容能发,含HTML/链接/代码的内容发不了;b.原因:WAF(云WAF/安全狗/宝塔防火墙/ModSecurity)误判发布内容为攻击(SQL注入/XSS/webshell上传/恶意提交),特别是内容含