You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含片段#的WordPress旧URL重定向失效问题求助

带URL片段(#)的旧链接重定向解决方案

首先明确核心问题:URL里的#(锚点片段)是浏览器端处理的内容,不会发送给服务器,所以Yoast这类服务器端重定向工具根本接收不到#后面的部分,自然无法触发重定向。下面给你三种可行的解决方式:

一、通过WordPress的functions.php实现

利用前端JS检测URL的hash部分,在页面加载时完成跳转,具体代码如下:

add_action('wp_head', 'redirect_old_hash_press_releases');
function redirect_old_hash_press_releases() {
    // 只在目标页面(比如/en/media/对应的页面)执行,替换成你的页面slug或ID
    if (is_page('media')) { 
        ?>
        <script>
            // 获取hash并去掉开头的#
            const urlHash = window.location.hash.slice(1);
            // 匹配旧链接的hash格式:/pressreleases/开头的路径
            if (urlHash.startsWith('/pressreleases/')) {
                // 构造新的目标URL,替换成你实际的新页面路径
                const newRedirectUrl = `https://www.example.com/new-press-release-section${urlHash}`;
                // 301永久重定向,replace不会留下历史记录
                window.location.replace(newRedirectUrl);
            }
        </script>
        <?php
    }
}

把这段代码添加到主题的functions.php文件(或使用代码片段插件),它会在指定页面的头部插入JS脚本,浏览器加载后自动检测hash并跳转。

二、Cloudflare配置方案

Cloudflare可以直接获取到客户端的完整URL(包括hash),有两种配置方式:

1. 页面规则(Page Rules)快速配置

  • 登录Cloudflare后台,进入域名的「规则」→「页面规则」
  • 创建新规则,匹配URL填:https://www.example.com/en/media/#/pressreleases/*
  • 规则动作选择「转发URL」,类型设为「301永久重定向」,目标URL填:https://www.example.com/new-target-path/$1($1会自动替换*匹配到的文章标题部分)
  • 保存规则,等待1-5分钟生效

2. Workers脚本(更灵活)

如果页面规则的匹配逻辑不够精准,用Cloudflare Workers写自定义脚本:

addEventListener('fetch', event => {
  event.respondWith(handleRedirect(event.request))
})

async function handleRedirect(request) {
  const currentUrl = new URL(request.url);
  // 匹配目标路径和hash格式
  if (currentUrl.pathname === '/en/media/' && currentUrl.hash.startsWith('#/pressreleases/')) {
    // 提取hash部分并去掉#
    const targetPath = currentUrl.hash.slice(1);
    // 构造新URL,替换成你的实际目标地址
    const newUrl = new URL(targetPath, currentUrl.origin);
    // 返回301重定向
    return Response.redirect(newUrl, 301);
  }
  // 其他请求正常放行
  return fetch(request);
}

部署这个脚本到Cloudflare Workers,并绑定到你的域名路径即可。

三、WP Engine相关配置

WP Engine的服务器端规则无法处理URL片段(因为服务器拿不到hash),但可以通过以下方式配合:

  • 使用WP Engine的「Custom Code」功能,添加和上面functions.php里一样的前端JS代码,作用和直接修改functions.php一致
  • 如果你开启了WP Engine的CDN,可参考Cloudflare的页面规则逻辑,在CDN配置里设置类似的URL转发规则(但WP Engine CDN的规则灵活性不如Cloudflare,优先推荐前两种方法)

内容的提问来源于stack exchange,提问作者RP-90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:46:23