德文产品页已经发布,客户打开却被送到英文页,要查的是访问时的语言规则。先用同一个德文网址比较新访客和已有语言选择的访客,再看最初的网页请求:是服务器让浏览器换地址,还是页面加载后才跳?确定来源后,改负责的那一项设置。
下面用青禾设备的AB120作教学例子。网址和结果都是设定;实际操作时,换成自己的产品地址和观察结果。
同一个德文网址,比较三种访问状态
先准备同一款AB120的两个完整地址:
德文:https://example.com/de/ab120/
英文:https://example.com/en/ab120/
在后台确认德文页已发布、产品正文完整、普通访客不用登录。缺少翻译或还在草稿里,先完成多语言页面设置;跳转设置不能补出不存在的德文页。
把德文网址直接粘到地址栏。若直开一直正确,只有点击语言按钮才到错页,右键复制那个按钮的链接,查看目标是否真是AB120的德文页。指向英文首页的按钮,应修改链接目标。
如果直接访问也出错,保留这个普通窗口,退出网站管理员账号,记为B。不要先清Cookie:它是网站存在浏览器里的小记录,可能记着上次选的语言。清掉后,原来出错的条件也可能消失。
另准备新访客窗口A:关闭所有旧无痕窗口,再开一个新无痕窗口,或使用独立浏览器配置。同轮打开的两个无痕窗口可能共享状态,不能当成两个新访客。
每次都重新粘入同一个德文网址,依次做三次:
- A直接打开德文AB120页。
- B用网站语言按钮选英文,再直接打开德文AB120页。
- B再用语言按钮选德文,再次直接打开德文AB120页。
每次记下最后的地址、正文语言,以及是否先显示德文再变英文;另记浏览器设置的语言和访问时间。这三次用同一条网址,才能看出“首次访问”或“上次选择”是否影响结果。
本例假设A最后到了英文,B后两次都留在德文。下一步查A的那次访问。这个差别还不能证明是IP定位、缓存或某个插件造成的。
从最初请求看,语言在哪一步改变
用Chrome记录出错那一次访问。若只在首次访问时跳转,重新准备A,在空白页先打开检查面板;已经跳过一次的窗口可能不会再触发。
- 页面空白处右键选“检查”,进入“Network/网络”,勾选“Preserve log/保留日志”。
- 清空请求列表,点“Doc/文档”。这会集中显示网页文档;清列表不会清Cookie。
- 将原德文网址粘到地址栏并访问。不要只刷新最后的英文页,否则只能看到英文页自己的请求。
点最初那条德文文档,在“Headers/标头 → General/常规”看完整Request URL和Status Code。状态码是服务器对这次请求的答复编号。接着分三种情况读。
最初就返回301、302等跳转状态。到“Response Headers/响应标头”找Location,它写着浏览器被要求去的地址。目标变成英文AB120页,就是需要查的跨语言一跳。若只是HTTP换HTTPS、补末尾斜杠,仍是德文地址,继续看后续请求即可。304是复用已有内容,不能当作语言跳转。
最初返回200,随后加载英文文档。200表示返回了内容,页面仍可能继续导航。点后面的英文文档,查看“Initiator/发起者”;有脚本线索时展开相关信息,找触发访问的脚本。页面内刷新也能导航,不能只凭“200后到英文”就认定JavaScript。Chrome网络面板文档和MDN跳转说明可用于对照这些字段与方式。
地址没变,正文却是英文。点原德文请求的“Response/响应”,查看返回内容。如果返回时已是英文,查页面输出和缓存;如果响应是德文、屏幕上后来才变英文,查改写正文的脚本。这两种问题需要改的地方不同。
沿用本例,假设A最初收到德文200,随后出现英文文档;维护者根据脚本与现有设置,确认是WPML的语言跳转功能。这样才有理由改WPML。只看到未知发起者,或X-Redirect-By: WordPress,还不能锁定插件:WordPress本身可默认写入这个响应头。
若记录显示请求用了浏览器缓存,可勾选“Disable cache/停用缓存”补做比较,保留勾选前的结果。它只停用浏览器缓存,不清Cookie,也不清服务器或CDN缓存。
按实际来源,修改自动规则
先到WordPress“插件 → 已安装插件”确认现有翻译工具。下面只用与自己网站相符的一段;HTTP规则或正文输出问题,交给相应维护者。
已确认是WPML或Weglot
本例的WPML功能按浏览器语言把首次访问的A送到英文。客户明确打开德文产品链接,已经表达了这次要看德文;浏览器默认语言不应替代这个选择。
进入“WPML → Settings → URLs and SEO → Browser language redirect”,选择不自动跳转并保存,保留人工语言按钮。WPML文档说明,这个功能在页面加载后由脚本运行,通常只跳一次,默认24小时后重置。因此刷新后正常,并不能排除它。该功能依据浏览器语言,不是原生IP定位。
已有Weglot则在“Weglot Plugin → Other options”关闭“Auto redirection”,点“Save Changes”。Weglot文档给出了这个入口;界面没有该项,交维护者核对现有接入方式。关闭确认有问题的自动功能即可,停整个翻译插件可能连德文页和人工切换也一起影响。
已有TranslatePress或Polylang
拥有TranslatePress自动语言检测附加功能的站点,在“Settings → TranslatePress → Advanced → Automatic User Language Detection”找到“Popup Type/弹窗类型”,选择访客能拒绝的弹窗或提示条,并保存。访客拒绝建议后,应能留在原德文页。
TranslatePress当前文档已将“Redirect Directly/直接跳转”列为废弃:旧站若还开着,改掉后可能不再显示。用现有功能处理,不必为这次排查另买附加功能。
Polylang的“Languages → Settings”也有浏览器语言检测,但官方说明描述的是首页行为。明确的德文产品地址出错,仍要查实际请求和规则,不能仅凭已安装Polylang就归因给首页选项。也别顺手改变默认语言目录;需要调整地址关系时,按固定链接与旧网址处理另行安排。
服务器跳转,或返回正文错语言
原德文请求的Location已经指向英文,让负责WordPress、服务器或CDN的人查实际匹配规则。CDN是站点外层提供内容和缓存的服务,有些站也在那里设置跳转。需要查的是这条源网址、触发条件和目标地址,确认哪个规则把明确的德文请求送到了英文,再调整其范围。
德文地址返回的正文已是英文,则比较源站与缓存中的实际内容,查不同语言是否被混用。一个“HIT/命中缓存”标记并不能证明原因。确认后,按真实语言条件区分缓存或避开不适用的缓存方式,再清受影响的内容;具体配置可接着看WordPress缓存设置。
若原响应是德文、页面后来才变英文,应先查改写正文的脚本。清缓存不能代替修改这个脚本。
给维护者的说明,要能重现这次访问
没有相应权限,也能把问题交清楚。按本例已确认的观察,可以这样写:
问题是AB120德文产品地址,预期打开完整德文,实际新访客A到了对应英文页。A是关闭全部旧无痕后新开的窗口,未登录网站,浏览器语言为英文。B用按钮选英文后再直开德文正常,选德文后再直开也正常。
最初德文文档返回200,随后加载英文文档,已确认由WPML语言脚本触发。网站现用WPML,请关闭已开启的Browser language redirect,保留人工按钮,并返回修改项和原德文地址的复查结果。
发送时附上前面的完整德英网址和访问时间。未知的地方直接写“发起者未确认”或“这行尚未测”;如果是302,附准确Location,如果只是正文错语,写清“地址未变”。不要将教学结果照抄为真实记录。
附必要字段的局部截图即可,不发送Cookie值或登录凭据。请维护者说明实际改了哪项设置或规则、影响哪些地址、是否处理相应缓存;收到回复后按原条件重开,才能知道改动是否有效。
修后应看到什么
回到第一节的三次访问:新A直开德文,B选英文后直开德文,B选德文后直开德文。B保留原语言选择。三次都应留在德文AB120页,显示完整德文正文。
再访问几次,看看页面被缓存后是否仍正确;手机打开同链接,点英文按钮应到同款AB120的英文页。价格、规格、询盘入口和真实地区、货币、权限规则仍应符合业务要求。
如果新A正确,原浏览器仍沿用旧永久跳转,保留旧记录,让维护者比较当前响应,再处理相关浏览器缓存。若新A第一次正确、第二次又错,则交回这两次原请求,继续查规则或缓存;不要先清掉B的语言选择,抹去问题条件。
前台稳定后再看Search Console(Google站长工具):选正确的网站资源,顶部粘完整德文网址,展开“网页索引编制”看上次抓取时间。旧记录早于修改,可能尚未更新。
再点“测试实际网址 → 查看测试的网页”,读HTML或截图中的语言与AB120内容。实时检查会跟随跳转,但不直接显示最终网址,绿色可抓取提示不能单独证明拿到的是德文,也不保证收录或排名。当前访问和内容正确后,语言标签问题另按hreflang与canonical设置处理。
规则分散在插件、服务器和缓存服务时,可把两条产品网址、三状态结果、现用工具和原请求带到Google SEO维护服务或联系表单,判断由编辑调整设置,还是维护者查具体规则。
常见问题
无痕窗口能打开德文,就算修好了吗?
还要看保留语言选择的B窗口和再次访问。无痕正常只说明这次新访客没有出错;原三种状态及缓存后的访问都保持德文,才说明这个明确地址稳定可用。
补hreflang能阻止跳回英文吗?
hreflang说明不同语言页面的对应关系,不控制浏览器跳转。先修送错语言的实际规则,前台两种页面能正确打开后再查标签。
只想在首页提示语言,可以保留自动检测吗?
现有工具支持时,可限制到首页,或改成能拒绝的语言建议。修改后仍要打开明确的德文产品地址并试人工切换,确认它们没有被首页规则覆盖。