GitHub项目页面:从子目录自动重定向到子域

时间:2014-05-19 14:09:33

标签: javascript redirect github-pages

我在大约一个月前发布了this question关于使用Github Pages的自定义域名。我已经为用户/组织页面以及项目页面设置了所有设置并正常工作。

我现在的问题是:现在我已正确设置了项目页面,以便www.domain.com/project/project.domain.com都可用,是否可以重定向可能访问" sub的用户-directory"更令人向往的"子域" URL?

我采访了GitHub支持他们说我可以使用javascript完成此重定向,但没有提供任何进一步的信息。他们显然不允许.htaccess个文件或任何其他类型的服务器端重定向。有人有什么想法吗?

编辑:我知道应该使用window.location.replace();这样做,所以我真正需要知道的是这个代码片段应该在repo中的位置。

2 个答案:

答案 0 :(得分:3)

如果您希望通过JavaScript将用户从www.domain.com/project/重定向到project.domain.com,可以将以下代码段添加到网址上存在的任何资源中:

var location = window.location;
if (
       location.hostname == "www.domain.com"
    && location.pathname.indexOf("/project") == 0
) {
    location.replace("http://project.domain.com");
}

(假设www.domain.com/project/处的资源是一个可以包含JavaScript的HTML页面。)您希望尽可能将其添加到页面顶部以减少数量重定向之前的时间(当它发生时)。

顺便说一句:我建议重定向用户并使用canonical URLs通知网络抓取工具您最喜欢的网址。也就是说,将以下内容添加到<head>

<link rel="canonical" href="http://project.domain.com">

重定向用户,特别是在整个页面加载并且JS有时间执行之后,用户体验非常糟糕。

答案 1 :(得分:1)

虽然您可以使用JavaScript执行此操作,但最好使用META tags for SEO purposes。您可以将这些标记添加到www.domain.com/project/页面的标题部分:

  <link rel="canonical" href="http://project.domain.com"/>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta http-equiv="refresh" content="0;url=http://project.domain.com" />

这些代码会指定一个规范页面(有助于防止&#34;重复内容&#34;来自Google的SEO惩罚),并通过page refresh启动重定向,延迟时间为0秒。

此处&#39; sa sample page(由Jekyll Alias Generator plugin生成)使用此技术将登陆/register2的访问者重定向到预定目的地/register