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

Apache重定向:替换URL中所有旧域名(含端口)实例求助

Apache重定向处理含旧URL的锚点内容解决方案

一、服务器端重定向(Apache mod_rewrite)

在旧域名的Apache配置文件(httpd.conf)或.htaccess中添加以下规则,将所有旧域名请求重定向到新域名,路径、查询字符串会被保留,浏览器也会自动携带锚点内容:

# 启用重写引擎
RewriteEngine On
RewriteBase /

# 匹配旧域名(忽略大小写),重定向到新域名
RewriteCond %{HTTP_HOST} ^old\.url\.com:9443$ [NC]
RewriteRule ^(.*)$ https://new.url.com:9443/$1 [R=301,L,NE]
  • R=301:永久重定向,帮助搜索引擎更新收录
  • L:标记为最后一条规则,停止后续规则匹配
  • NE:禁止对URL中的特殊字符(如%)再次转义,避免破坏锚点里的编码内容

二、客户端锚点内容替换(JavaScript)

浏览器不会把锚点(#之后的内容)发送到服务器,所以服务器无法直接修改这部分内容,需要在新域名的页面中添加JS代码,批量替换锚点里所有旧URL的编码值:

function updateHashUrl() {
    // 旧URL的编码值(对应https://old.url.com:9443)
    const oldEncoded = '%3A%2F%2Fold.url.com%3A9443';
    // 新URL的编码值(对应https://new.url.com:9443)
    const newEncoded = '%3A%2F%2Fnew.url.com%3A9443';
    
    if (window.location.hash) {
        // 全局替换所有旧编码值
        const updatedHash = window.location.hash.replace(new RegExp(oldEncoded, 'g'), newEncoded);
        if (updatedHash !== window.location.hash) {
            // 无刷新更新URL锚点
            window.history.replaceState(null, document.title, updatedHash);
            // 若需刷新页面使新锚点生效,替换为下面一行:
            // window.location.href = window.location.origin + window.location.pathname + window.location.search + updatedHash;
        }
    }
}

// 页面加载时执行替换
window.addEventListener('load', updateHashUrl);
// 监听锚点变化,动态处理
window.addEventListener('hashchange', updateHashUrl);

把这段代码加到新域名所有页面的公共头部或尾部,确保页面加载时自动处理锚点内容。

关键说明

  • 服务器端重定向负责切换基础域名,客户端JS负责处理锚点中嵌套的旧URL编码内容
  • 若旧、新域名部署在同一服务器,可直接在同一配置文件中完成规则设置,无需跨服务器跳转

内容的提问来源于stack exchange,提问作者HelAu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:25:04