301重定向为github托管的网站?

时间:2012-02-14 12:24:05

标签: redirect github hosting jekyll github-pages

这是我的Github存储库:https://github.com/n1k0/casperjs

有一个gh-pages分支来保存项目文档,基本上是项目网站:https://github.com/n1k0/casperjs/tree/gh-pages

此分支在http://n1k0.github.com/casperjs/ - hurray。

设置文档站点

与此同时,我已经通过casperjs.org域名通过该网站获取此网站,因此我将CNAME文件设为recommended in the docshttps://github.com/n1k0/casperjs/blob/gh-pages/CNAME - 他们的例子,该操作应该从www.example.com和charlie.github.com创建重定向到example.com ......

虽然网站现在指向http://casperjs.org/,但是从http://n1k0.github.com/casperjs/(旧网站网址)到新域名没有301重定向。

知道如何设置这样的重定向,如果可能的话?这是一个错误吗?如果是,我应该在哪里打开一个问题?

7 个答案:

答案 0 :(得分:29)

将这个主题从死里复活,提到GH现在支持重定向 - 从重定向到参数https://github.com/jekyll/jekyll-redirect-from#redirect-to

只需将其添加到_config.yml

即可
hw1.c:63:25: error: subscripted value is not an array, pointer, or vector
                while (*(words[count])[k] != '\0'){

这是索引页面的顶部。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(int argc, char* argv[]){

    if (argc != 3){
        fprintf(stderr, "Incorrect number of arguments\n");
        exit(1);
    }

    char* infile = argv[1];
    FILE* finp = fopen(infile, "r");
    if (finp == NULL){
        fprintf(stderr, "Unable to open input file\n");
        exit(1);
    }

    char* prefix = argv[2];

    int count = 0;
    int size = 20;
    char* words = calloc(size, sizeof(char));
    printf("Allocated initial array of 20 character pointers.\n");
    char* str = malloc(30*sizeof(char));

    while (fscanf(finp, "%s", str) == 1){

        if (count == size){
            words = realloc(words, 2 * size);
            size *= 2;
            printf("Reallocated array of %d character pointers.\n", size);
        }

        int i = 0;
        while (str[i] != '\0'){
            i++;
        }

        char* new_word = malloc((i+1)*sizeof(char));

        int j = 0;
        while (str[j] != '\0'){
            new_word[j] = str[j];
            j++;
        }

        new_word[j] = '\0';

        int k = 0;

        while (new_word[k] != '\0'){
            printf("%c", new_word[k]);
            k++;
        }

        printf("\n");

        words[count] = *new_word;

        /*k = 0;
        while (*(words[count])[k] != '\0'){
            printf("%c", *(words[count])[k]);
            k++;
        }

        printf("\n");*/

        count++;

    }


}

答案 1 :(得分:12)

为了避免重复内容,您可以在第一时间添加这样的元规范:

<link rel="canonical" href="http://casperjs.org">

答案 2 :(得分:7)

您可以在主机检测后使用Javascript重定向,如下所示:

if (window.location.href.indexOf('http://niko.github.com') === 0) {
    window.location.href = 'http://casperjs.org{{ page.url }}';
}

但我同意,这不是HTTP重定向。

答案 3 :(得分:3)

为什么你没有使用http://www.w3.org/TR/WCAG20-TECHS/H76.html

那会给出

<meta http-equiv="refresh" content="0;URL='http://casperjs.org/'" />

答案 4 :(得分:3)

手动布局方法

如果您不想使用https://github.com/jekyll/jekyll-redirect-from,请自行轻松实现:

a.md

---
layout: 'redirect'
permalink: /a
redir_to: 'http://example.com'
sitemap: false
---

_layouts/redirect.html基于Redirect from an HTML page

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Redirecting...</title>
  {% comment %}
    Don't use 'redirect_to' to avoid conflict
    with the page redirection plugin: if that is defined
    it takes over.
  {% endcomment %}
  <link rel="canonical" href="{{ page.redir_to }}"/>
  <meta http-equiv="refresh" content="0;url={{ page.redir_to }}" />
</head>
<body>
  <h1>Redirecting...</h1>
  <a href="{{ page.redir_to }}">Click here if you are not redirected.<a>
  <script>location='{{ page.redir_to }}'</script>
</body>
</html>

现在:

firefox localhost:4000/a

会将您重定向到example.com

与此示例一样,redirect-from插件不会生成301s,只会生成meta + JavaScript重定向。

我们可以验证发生了什么:

curl localhost:4000/a

在GitHub页面v64上进行测试,现场演示位于:https://github.com/cirosantilli/cirosantilli.github.io/tree/d783cc70a2e5c4d4dfdb1a36d518d5125071e236/r

答案 5 :(得分:3)

Github网页不支持.htaccessnginx/conf

等内容

https://help.github.com/articles/redirects-on-github-pages/

最简单的方法是:

HTML重定向:

index.html

<html>
  <head>
    <meta http-equiv="refresh" content="0; url=http://www.mywebsite.com/" />
  </head>

  <body>
    <p><a href="http://www.mywebsite.com/">Redirect</a></p>
  </body>
</html>

答案 6 :(得分:1)

在为我的github页面网站切换域时,我遇到了类似的问题。我在Heroku上设置rerouter来处理301重定向到新域。它可以非常简单地处理域到域的重定向,但您可能需要对其进行修改以处理您网站的旧域+路径位置。

我在这里详细介绍了这些步骤:

http://joey.aghion.com/simple-301-redirects/