簡體   English   中英

為什么標准重定向在Chrome中對我不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM