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

如何通过JavaScript重定向时移除URL路径首段的/blog/文件夹?

解决路径重定向时移除首个文件夹的问题

我懂你的困扰——你要把主域名下的/blog/xxx路径重定向到子域名blog.siteA.com下的/xxx,但现在的脚本不小心把/blog/也带过去了对吧?下面给你两种可靠的实现方式:

方法一:使用URL API(推荐)

URL API是处理URL最安全的方式,不用手动拼接字符串,能避免很多边界问题:

// 获取当前页面的URL对象
const currentUrl = new URL(window.location.href);

// 处理路径:精准移除开头的"/blog/"部分
const newPath = currentUrl.pathname.replace(/^\/blog\//, '/');

// 构建新URL:子域名+处理后的路径+保留原查询参数和哈希值
const newUrl = new URL(`https://blog.siteA.com${newPath}${currentUrl.search}${currentUrl.hash}`);

// 执行重定向(replace不会留下历史记录,需保留历史则用assign)
window.location.replace(newUrl.href);

解释一下细节:

  • 正则^\/blog\/里的^确保只匹配路径开头的/blog/,不会误删路径中间出现的blog字符串
  • 保留了原URL的查询参数(search)和哈希值(hash),如果不需要可以直接去掉这两部分
  • 用replace重定向不会让用户通过返回按钮回到原页面,要是需要保留跳转历史,换成window.location.assign(newUrl.href)就行

方法二:字符串处理(适合简单固定场景)

如果你的URL结构非常固定,也可以直接用字符串操作快速实现:

const currentPath = window.location.pathname;
// 检查路径是否以/blog/开头,是的话截取后面的部分
const trimmedPath = currentPath.startsWith('/blog/') ? currentPath.slice(6) : currentPath;
// 拼接新地址并跳转
const newUrl = `https://blog.siteA.com${trimmedPath}${window.location.search}${window.location.hash}`;
window.location.replace(newUrl);

这里slice(6)是因为/blog/的长度刚好是6(包含前后两个斜杠),截取从第6位开始的字符串,就能得到/articlename/部分。

额外提醒

  • 尽量把脚本放在页面加载早期执行,避免页面内容加载后再跳转影响用户体验
  • 可以测试下边界情况:比如原路径是/blog/(没有后续文章名),处理后会变成/,跳转后就是blog.siteA.com/,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:03:21