从GitHub页面中删除html扩展名

时间:2014-01-20 21:52:58

标签: github github-pages

我正在使用GitHub页面来托管我的最新网站(http://jasonhoffmann.github.io/)。我想知道是否有办法从子页面(http://jasonhoffmann.github.io/contact.html)的末尾删除.html扩展名,因为无法访问服务器。

8 个答案:

答案 0 :(得分:79)

它已经有效,你不需要做任何事情

我不确定您是否已经知道这一点,但是要从GitHub页面删除.html扩展名,您只需从链接中删除.html扩展名。

换句话说,它已经有效,你不需要做任何事情。您不必使用子目录,CNAME,重定向,Jekyll _config.yml,YAML前端问题或此处所有答案中建议的任何其他黑客。

实施例

例如,您可以使用:

而不是:

并显示相同的文件。 只需更改链接中的链接就可以了。

测试

我进行了一些测试,以演示它如何真正起作用,您可以点击链接,它会突出显示哪个文件加载了哪个URL,包括在某些情况下有关不安全重定向的警告。

对于eaxample,链接:

显示它由URL中的test1显示,但实际显示文件test1.htmlenter image description here

其他解决方案的问题

在其他答案中使用此处建议的特殊子目录中的index.html之类的内容将无法执行您想要的操作,只需在example.com/name.html时提供example.com/name,而是提供给您301重定向到example.com/name/(请注意尾随斜杠),这反过来会为您提供example.com/name/index.html文件的内容。

这导致以下问题:您位于不同的目录中,您需要使用<a href="../name">而不仅仅<a href="name">来获取同级别其他网页的链接,并且所有资产都相同(或者您可以使用绝对路径作为某人建议在GitHub页面上不是一个好主意 - 尤其是项目页面 - 因为在重新命名的分叉和项目之后,您必须记住更新所有html中的所有链接和js / css资产文件)。

另一件事是,现在每个导航都有一个无用的重定向 - 顺便将从HTTPS重定向到HTTP 来自安全网址,而没有斜线到带有斜杠的不安全的网址,例如见:

(在撰写本文时)重定向到:

到:

正如您所料,所以请确保您知道这一点。看到: Insecure redirect (请注意,此图片链接到安全的HTTPS网址,但您最终使用的是不安全的HTTP连接 - 您可能需要使用隐身模式才能看到。)

截至2016年6月17日,这就是标题的样子:

$ curl -I https://rsp.github.io/gh-pages-no-extension/dir
HTTP/1.1 301 Moved Permanently
Server: GitHub.com
Content-Type: text/html
Location: http://rsp.github.io/gh-pages-no-extension/dir/
...       ^^^^

希望GitHub将在未来解决这个问题。 (我在大约一年前撰写此答案时发现了这个问题,截至2016年6月,这个问题仍然存在。)

虽然奇怪的是,截至2016年6月17日(我不确定是否总是如此,因为我最近在更新此答案时注意到了这一点)此网址:

重定向到:

应该如此。请参阅标题:

$ curl -I https://rsp.github.io/gh-pages-no-extension
HTTP/1.1 301 Moved Permanently
Server: GitHub.com
Content-Type: text/html
Location: https://rsp.github.io/gh-pages-no-extension/
...       ^^^^^

唯一的区别是它是一个项目根URL而不是项目中的更深层目录(参见the project structure)所以错误重定向似乎只出现在项目的GitHub页面内的深层链接中浏览器我只在您使用隐身模式时进行了测试。

底线是你需要小心。我的建议是完全避免所有重定向,并且只使用那些根本不会导致重定向的网址。

答案 1 :(得分:13)

我认为你必须使用子目录(但可能有一种更简单的方法):

/index.html            => http://jasonhoffmann.github.io
/contact/index.html    => http://jasonhoffmann.github.io/contact

但是,您可以使用CNAME更多地控制GitHub页面重定向到您自己的domain。对不起,我没有给你一个明确的答案,但希望这可以让你开始。

答案 2 :(得分:6)

您可以通过Jekyll执行此操作,这是GitHub Pages中内置的静态站点生成器。它有一些permalink settings,可以在_config.yml中设置(这会影响您网站上的所有页面和帖子),也可以设置在每个页面/帖子的YAML front-matter中。

例如,您可以将以下代码添加到contact.html文件中:

---
permalink: contact/
---

这将在<!DOCTYPE html>之前插入,但是Jekyll会在GitHub页面上提供它时将其删除。执行此操作后,您将能够jasonhoffman.github.io/contact而不是jasonhoffman.github.io/contact.html访问该页面。 Jekyll实际上正在做的是创建一个名为contact的目录,并在其index.html内容中放入contact.html文件。如果你install and run Jekyll locally,这就是你会看到的:

.
|- _config.yml (optional)
|- contact.html
|- index.html
|- css
   |- styles.css
|- img
   |- image.jpg
|- _site
   |- index.html
   |- contact
      |- index.html
   |- css
      |- styles.css
   |- img
      |- image.jpg

如果你没有在本地安装Jekyll,你会看到所有这些,减去_site文件夹。当你将它推送到GitHub时,他们的服务器将运行Jekyll并为你生成并提供相当于_site文件夹(但它在你的GitHub存储库中不可见)。

您也可以跳过Jekyll并在其中创建一个contact子目录,其中包含index.html。无论哪种方式,您还需要确保您网站中任何指向资产(img,css,js)的链接都有前一个/。例如,

<link rel="stylesheet" href="css/style.css">

应该是

<link rel="stylesheet" href="/css/style.css">

答案 3 :(得分:4)

目前,您只需添加permalink: /your-pretty-url

即可

另一个答案不起作用。我试过了。您需要添加'/'前缀。

例如:

---
layout: post
title:  "Welcome to Jekyll!"
date:   2017-04-29 22:04:31 +0700
categories: jekyll update
permalink: /welcome
---

答案 4 :(得分:3)

我正在使用arctic fox themeuses following link strings

public class TestShoutBox5 {

/**
 * @param args
 *            the command line arguments
 * 
 */
public static void main(String[] args) {
    // TODO code application logic here
    String Subjects[] = new String[] { "My Teacher", "I", "You" };

    Random random = new Random(); // One Random

    int S = random.nextInt(3);

    String Objects[] = new String[] { "Homework", "Work", "Quiz" };

    int O = random.nextInt(3);

    String Verbs[] = new String[] { "Studying", "Playing", "Working" };

    int R = random.nextInt(3);

    String Adjectives[] = new String[] { "Smart", "Tall", "Hard" };

    int A = random.nextInt(3);

    String Adverbs[] = new String[] { "quickly", "everywhere", "fast" };

    int Ad = random.nextInt(3);

    System.out.print("Your Sentence" + " " + Subjects[S] + " " + Objects[O] + " " + Verbs[R] + " " + Adjectives[A]
            + " " + Adverbs[Ad]);

}

}

解决方案是添加<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a> 作为过滤器,结果为

remove: '.html'

Local serving with Jekyll目前不起作用,但承诺给Jekyll 3.0:https://github.com/jekyll/jekyll/pull/3452

答案 5 :(得分:3)

通过将永久链接更改为

,删除了.html扩展名

private static BiConsumer<Parent, String> consumer2 = Parent::doSomething;

别忘了最后一个/

答案 6 :(得分:2)

由于用户rsp已经提到GitHub Pages已经实现了非常永久链接,并且没有必要做任何事情,因此默认情况下在本地或Jekyll中运行Jekyll服务器时不会这样做。如果你想在自己的非Github Pages网站(仍然使用Jekyll)中使用Jekyll从页面中删除html扩展名,或者在推送到GitHub之前尽可能多地拥有一个类似于Github Pages的本地开发站点,

您只需将其添加到 _config.yml 文件

permalink: pretty

通过使所有帖子都有自己的文件夹和名为index.html的帖子,从链接中删除.html。

答案 7 :(得分:-1)

你不需要做所有之前的回复,你可以做一件简单的事情,就是在你的情况下 make a folder that has your html file name... 它将是 /contacts 然后将你的 contacts.html 重命名为 index .html 然后将其移动到您创建的 /contacts 文件夹中!

输出: http://mysite.github.io/contact 享受!

instagram:@ramyhadid

<块引用>

编辑:我知道来不及回答:)