  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ page.title }} - Bazel</title>

    <script>
      var current_url = window.location.href;
      var bad_url = new RegExp("^https?://bazelbuild.github.io/bazel/");
      if (bad_url.test(current_url)) {
        window.location.replace(current_url.replace(bad_url, "https://www.bazel.io/"));
      }
      var http_url = new RegExp("^http://(www\.)?bazel.io/");
      if (http_url.test(current_url)) {
        window.location.replace(current_url.replace(http_url, "https://www.bazel.io/"));
      }
    </script>

    <link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site_root }}">

    <!-- Webfont -->
    <link href="//fonts.googleapis.com/css?family=RobotoDraft:300,400,500|Source+Code+Pro:400,500,700" rel="stylesheet">

    <link rel="shortcut icon" type="image/png" href="/images/favicon.ico">

    <!-- Bootstrap -->
    <link href="/assets/css/bootstrap.min.css" rel="stylesheet">
    <link href="/assets/css/font-awesome.min.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

    <!-- Custom stylesheet -->
    <link rel="stylesheet" type="text/css" href="/css/main.css" />

    <!-- metadata -->
    <meta name="og:title" content="{{ page.title }}"/>
    <meta name="og:image" content="/images/bazel-og-image.png"/>
  </head>
