最新消息:欢迎各位技术大牛一起交流讨论,邮箱:gww0426@163.com

用html的base标签解决相对路径问题

WEB前端 郭伟伟 3568浏览 0评论

网站是由两套独立的系统组合而来,一套门户,一套自定义开发,分别位于不同的服务器。

域名只能有一个,于是使用nginx做了代理,根据location做了转发,比如/portal就转发到门户系统。

问题是门户系统一直使用的是相对路径,首页做了rewrite,而首页的很多链接(包括css、js、图片等)都是相对路径,问了门户系统那边的没法解决,只能用相对路径。

杯具来了,href="news/2014/05/25/1234.html"类似这样的链接都成了http://www.guoweiwei.com/news/2014/05/25/1234.html的全路径,而这个路径在nginx中是没法识别成门户系统的(nginx是通过/portal来匹配的)。

这是因为:HTML文档所有链接中的相对路径,浏览器都会提取当前文档的URL来填充。

突然想起了HTML的base标签,来看W3C的解释:

<base> 标签为页面上的所有链接规定默认地址或默认目标。

通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。

使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 <a>、<img>、<link>、<form> 标签中的 URL。

注释:<base> 标签必须位于 head 元素内部。

`(*∩_∩*)′尝试一下,在head标签中加入base标签

<base href="http://www.guoweiwei.com/portal/" />

问题果然解决!

注:文中使用的域名和路径非真实场景中的域名和路径。

 

转载请注明:郭伟伟@互联网 » 用html的base标签解决相对路径问题


发表我的评论
取消评论

使用新浪微博登陆

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址