使用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
相关产品推荐
相关产品推荐

