Visual Studio 2015中迁移站点路径后链接失效,修改base标签无效求助
我来帮你排查下这个问题——迁移到http://basedomain/anotherlevel/后链接全部失效,修改<base>标签没效果,这种情况我碰到过好几次,大概率是几个细节没处理到位:
修正
<base>标签的写法
你之前尝试的<base href="/anotherlevel" />和<base href="http://basedomain/anotherlevel" />都少了末尾的斜杠,这会导致相对链接解析错误。正确的写法应该是:<base href="/anotherlevel/" />或者带完整域名的版本:
<base href="http://basedomain/anotherlevel/" />没有末尾斜杠的话,比如页面里的
<a href="page.html">会被解析成/anotherlevelpage.html,而不是你预期的/anotherlevel/page.html,这是最常见的坑。检查Visual Studio 2015的项目部署配置
右键你的项目 → 选择「属性」→ 切换到「Web」选项卡:- 确保「项目URL」设置为
http://basedomain/anotherlevel/ - 「虚拟路径」对应设置为
/anotherlevel
如果这里还是原来的根路径,VS调试时会把站点部署到根目录,你的<base>标签自然无法生效。
- 确保「项目URL」设置为
排查页面内的绝对路径链接
如果页面里的链接是硬编码的绝对路径(比如<a href="http://basedomain/page.html">),<base>标签对这类链接是无效的——绝对路径会直接忽略base的配置。你需要把这些链接改成相对路径,比如<a href="page.html">或者<a href="./page.html">,这样才会结合base标签的路径进行解析。强制清除浏览器缓存
有时候浏览器会缓存旧的页面资源,包括之前的<base>设置。可以按Ctrl+F5强制刷新页面,或者直接清空浏览器缓存后再测试,避免缓存干扰你的调试结果。
内容的提问来源于stack exchange,提问作者AndrewBenjamin

