我使用GitHub頁面託管我的最新網站(http://jasonhoffmann.github.io/)。我想知道是否有辦法從子頁末尾刪除.html擴展名(http://jasonhoffmann.github.io/contact.html),因爲沒有訪問服務器的權限。從GitHub頁面刪除html擴展
回答
我會假設你將不得不使用子目錄(但有可能是一個更簡單的方法):
/index.html => http://jasonhoffmann.github.io
/contact/index.html => http://jasonhoffmann.github.io/contact
但是,您可以使用CNAME到GitHub的頁面重定向到自己domain有更多的控制。對不起,我沒有給你一個明確的答案,但希望這可以讓你開始。
您可以通過Jekyll,一個內置於GitHub頁面的靜態網站生成器來完成此操作。它有一些permalink settings,可以在_config.yml
(這將影響您網站上的所有頁面和帖子)或YAML front-matter中爲每個Page/Post設置。
例如,你可以在下面的代碼添加到您的contact.html
文件:
---
permalink: contact/
---
這<!DOCTYPE html>
之前插入,但傑奇會照顧在投放時在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
如果沒有本地安裝化身,你會看到這一切,減去_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">
它已經工作,你不必做任何事情
我不知道你是否已經意識到這一點或不但要從GitHub頁面中移除.html擴展名,您只需從鏈接中移除.html擴展名即可。
換句話說,它已經工作,你不必做任何事情。您不必在此處使用子目錄,CNAME,重定向,Jekyll _config.yml,YAML前臺或任何其他hack提示。
例子
例如,你可以使用:代替
:
它顯示相同的文件。 只需更改鏈接中的鏈接即可。
測試
我做了一些測試,證明它到底是如何工作的,您可以點擊鏈接,它突出了文件加載與網址,其中包括有關在某些情況下不安全重定向警告。
對於eaxample,鏈接:
表明,它是通過在URL中的test1
顯示,但實際顯示文件test1.html
:
問題與其他解決方案
在特殊子目錄中使用像這樣在其他答案建議這樣的東西不會做你想要的東西,當詢問example.com/name
只是服務example.com/name.html
,而是會給你一個301重定向到example.com/name/
(注意尾隨斜槓),這反過來會給你的內容example.com/name/index.html
文件。
這導致以下問題:你是在不同的目錄,你需要使用<a href="../name">
而不是爲鏈接到其他網頁在同一水平上只是<a href="name">
和同樣適用於所有的資產(或者你可以使用絕對路徑因爲有人建議這不是GitHub頁面上的好主意 - 尤其是項目頁面 - 因爲在重命名叉子和項目後,你必須記得更新所有html文件中的所有鏈接和js/css資源)。
的另一件事是,現在你必須爲每一個導航無用重定向 - 這亦重定向從HTTPS到HTTP(從安全網址沒有斜槓不安全的URL以斜槓),例如見:
其中(在寫入時)重定向到:
和不到:
如你所期望的,所以請確保您知道這一點。請參閱: (注意,這個圖片鏈接到一個安全的HTTPS URL,但你最終使用不安全的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/
... ^^^^^
唯一的區別是,它是一個項目的根網址,而不是項目中更深的目錄(見the project structure),所以馬車重定向似乎只存在於一個項目的GitHub的內部深層鏈接我只在使用隱身模式時纔會測試網頁和一個瀏覽器。
的底線是,你需要小心。我的建議是完全避免所有重定向,並只使用那些根本不會導致任何重定向的網址。
正如用戶rsp所提到的,漂亮的固定鏈接已經被GitHub Pages實現了,並且不需要做任何事情,在本地運行Jekyll服務器或默認運行在Jekyll時,這不會完成。如果你想在你自己的非Github Pages站點(仍然與Jekyll一起提供)中使用Jekyll去除html擴展,或者在推送到GitHub之前儘可能地有一個類似於Github Pages的本地開發站點,
你只需要它添加到_config.yml
文件:
permalink: pretty
這使所有的帖子都有自己的文件夾並命名爲index.html中的文章鏈接刪除的.html。
我使用arctic fox theme,其中uses following link strings:
<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a>
的解決方案是增加remove: '.html'
作爲過濾器,從而導致
<a class="page-link" href="{{ page.url | remove: '.html' | prepend: site.baseurl }}">{{ page.title }}</a>
目前Local serving with Jekyll不起作用,但對於許Jekyll 3.0:https://github.com/jekyll/jekyll/pull/3452
現在,您只需添加permalink: /your-pretty-url
其他答案不起作用。我試過了。你需要添加'/'前綴。
例如:
---
layout: post
title: "Welcome to Jekyll!"
date: 2017-04-29 22:04:31 +0700
categories: jekyll update
permalink: /welcome
---
你懂了! '''permalink:pretty'''是去https://jekyllrb.com/docs/permalinks/ – 0bserver07
- 1. 從Asp.Net頁面刪除擴展?
- 2. 從SharePoint頁面中刪除aspx擴展
- 3. 使用UrlRewriteFilter從頁面中刪除.html擴展名? - 使用GAE
- 4. 如何從單個頁面中刪除.php或.html擴展名?
- 5. 刪除HTML擴展
- 6. 刪除HTML或ASPX擴展
- 7. localhost刪除HTML擴展
- 8. NGINX刪除刪除擴展名爲.html
- 9. 刪除面servlet的URL模式和頁面擴展從URL
- 10. github存儲庫刪除/刪除和github頁面
- 11. 刪除擴展名從URL
- 12. 從Vs2013刪除擴展名
- 13. 通過Chrome擴展插入/刪除HTML
- 14. Tuckey URL Rewrite - 刪除.html擴展
- 15. 只刪除URL中的.html擴展名
- 16. URL重寫 - 刪除擴展名爲.html
- 17. 刪除從GitHub
- 18. htaccess刪除擴展
- 19. 使用Chrome擴展編輯頁面html
- 20. 什麼是HTML頁面的擴展
- 21. 永久刪除HTML擴展與網頁配置
- 22. 鏈接到chrome://擴展頁面,非擴展名HTML
- 23. modrewrite刪除文件的擴展名,但仍然加載頁面
- 24. Apache mod_rewrite頁面前的查詢字符串,並刪除擴展
- 25. mod_rewrite - 友好的URL和刪除頁面擴展
- 26. htaccess在兩個不同的頁面中刪除擴展
- 27. 可能會刪除PHP頁面上的擴展?
- 28. 如何刪除頁面底部的空白(鍍鉻擴展名)?
- 29. 擴展頁面類
- 30. 在github頁面中刪除「用戶名」頁面document.title
不與[北極狐主題]工作(https://github.com/diezcami/arctic-fox-theme)。 必須使用'page.url |刪除:'.html'。 本地服務將與Jekyll 3.0起:https://github.com/jekyll/jekyll/pull/3452 – koppor
您是否在GH頁面上託管它,並使用他們的jekyll版本? – matrixanomaly