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

设置location.href='/foo'生产环境正常,IIS环境路径跳转异常咨询

问题解决:IIS部署子路径下location.href跳转异常

问题原因

你写的location.href = '/foo'用的是根相对路径,这种路径会直接基于域名的根目录(比如http://localhost/)跳转,而当应用部署在IIS的/myapp子路径下时,就会跳过子路径直接跳到http://localhost/foo,而非预期的http://localhost/myapp/foo。

解决方案

1. 使用相对路径(无开头斜杠)

如果当前页面的路径是应用根目录下的页面(比如http://localhost/myapp/),直接用不带斜杠的相对路径:

location.href = 'foo';

⚠️ 注意:如果当前页面在应用的子目录下(比如http://localhost/myapp/sub/page),这种写法会跳到http://localhost/myapp/sub/foo,而非应用根下的/foo。

2. 动态获取应用基础路径(推荐)

通过当前页面的URL动态提取应用的部署路径,再拼接目标路径,适配不同的部署环境:

// 提取当前应用的基础路径(比如从http://localhost/myapp/page中得到/myapp)
const pathSegments = window.location.pathname.split('/').filter(segment => segment);
const basePath = pathSegments.length > 0 ? `/${pathSegments[0]}` : '';
location.href = `${basePath}/foo`;

或者利用URL API更简洁地处理:

// 基于当前页面的origin和应用路径构造目标URL
const targetUrl = new URL('foo', window.location.origin + window.location.pathname.split('/').slice(0, -1).join('/') + '/');
location.href = targetUrl.href;

3. 硬编码基础路径(仅适用于固定部署路径)

如果应用的部署路径永远是/myapp,可以直接写绝对路径:

location.href = '/myapp/foo';

⚠️ 缺点:部署路径变更时需要同步修改代码,不灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:21:03