[英]Why aren't canonical redirects working for me in Chrome?
我使用Hexo作為我的網站codefoster.com的靜態站點生成器,並且使用別名插件生成重定向,以便可以創建諸如codefoster.com/slug
。
別名生成以下內容...
html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Redirecting...</title> <link rel="canonical" href="https://1drv.ms/p/s!AvStLR7eqJbDyaZpnDDMJvbGtLrI5w"> <meta http-equiv="refresh" content="0; url=https://1drv.ms/p/s!AvStLR7eqJbDyaZpnDDMJvbGtLrI5w"> </head> </html>
一個例子是我最近在VS Code上發表的演講。 我將別名/deck/codeyourcode
到_config.yml
,URL codefoster.com/deck/codeyourcode現在可以正確生成重定向。
我的問題是重定向在Edge中有效,但在Chrome中它會觸發文件下載。 如何告訴Chrome瀏覽器導航到重定向URL?
-增加了2018/3/26-
我還沒有開始工作,但是已經縮小了范圍。 並不是我網站上的每個鏈接都被用作application/octet-stream
。 我只是將這些重定向(通過Hexo靜態站點生成器的別名擴展名)重定向到一個驅動器共享。 此外,僅當我從HTTP重定向到HTTPS時。
所以我想我現在的最終問題是如何做一個
因此, http://codefoster.com/deck/codeyourcode重定向到HTTPS URL並失敗,而http://codefoster.com/codechat/071重定向到HTTP URL並且它起作用。 如果將curl
與-v
一起使用,則會看到HTTP生成text/html
而HTTPS生成application/octet-stream
。
這可能是設計使然,但是除了讓codefoster.com通過HTTPS工作之外,我如何完成我想做的事情?
-更多編輯-
我能夠把s
斷別名,它仍然失敗,所以它不是因為它要的HTTPS協議明確,但它實際上是在看重定向URL,並確定了一些未知的原因,它應該是一個application/octet-stream
。
終於想通了!
var express = require('express');
var path = require('path')
express()
.use(express.static(__dirname, {
setHeaders: (res, requestPath) => {
let noExtension = !Boolean(path.extname(requestPath));
if(noExtension) res.setHeader('Content-Type', 'text/html');
}
}))
.listen(process.env.PORT || 3000);
每次處理請求時,它都會查看所請求路徑的擴展名,如果沒有擴展名,則將Content-Type
標頭設置為text/html
。 很有魅力!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.