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

使用Haml与Sinatra时外部链接被识别为路由路径的问题求助

解决Sinatra中Haml外部链接跳转错误的问题

这个坑我之前踩过!你遇到的问题根源在于链接地址缺少协议头,浏览器把它当成了相对路径来解析,所以Sinatra才会试图去匹配/www.shunsukekohari.com这个本地路由,而不是跳转到外部网站。

正确的写法应该是这样:

%a{:href => "https://www.shunsukekohari.com"} test

为什么要加https://?

当你只写www.shunsukekohari.com时,浏览器会默认把它当成当前域名下的子路径,比如如果你的Sinatra应用运行在http://localhost:4567,那点击链接后会跳转到http://localhost:4567/www.shunsukekohari.com,自然就触发了Sinatra的路由匹配逻辑。

加上https://(或者http://)之后,浏览器就会识别这是一个绝对URL,直接跳转到对应的外部网站,不会再走本地路由。

额外小技巧

如果想让链接自动适配当前页面的协议(比如当前是http就用http,是https就用https),可以用//开头:

%a{:href => "//www.shunsukekohari.com"} test

这种写法在混合协议的场景下会更灵活~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:08:08