簡體   English   中英

重定向到 Firebase 托管自定義域

[英]Redirect to Firebase Hosting custom domain

我已經使用 Firebase Hosting 設置了一個自定義域(例如 myapp.domain.com)。

如何重定向(或關閉)默認的 Firebase 托管 URL(例如 myapp.firebaseapp.com),以便只能從自定義域訪問該應用程序?

您無法關閉子域。 您的應用將始終在https://myapp.firebaseapp.com您設置的任何自定義域上可用。

要重定向人員,您可以向 HTML 添加canonical鏈接:

<link rel="canonical" href="http://myapp.domain.com/" />

在 Google 網站站長中心博客上的指定您的規范中閱讀更多相關信息。

您可以使用 Firebase 函數。

每月 125K 次調用免費 - https://firebase.google.com/pricing

使用 Express 中間件的示例:

// functions/index.js

const functions = require('firebase-functions');
const express = require('express');
const url = require('url');

const app = express();

// Allowed domains
let domains = ['localhost:5000', 'example.com'];
// Base URL to redirect
let baseurl = 'https://example.com/';

// Redirect middleware
app.use((req, res, next) => {
    if (!domains.includes(req.headers['x-forwarded-host'])) {
        return res.status(301).redirect(url.resolve(baseurl, req.path.replace(/^\/+/, "")));
    }
    return next();
});

// Dynamically route static html files
app.get('/', (req, res) => {
    return res.sendFile('index.html', { root: './html' });
});

// ...

// 404 middleware
app.use((req, res) => {
    return res.status(404).sendFile('404.html', { root: './html' });
});

// Export redirect function
exports.redirectFunc = functions.https.onRequest(app);

導出的函數名稱必須添加到 firebase.json 中的重寫中,例如:

{
    "hosting": {
        "public": "public",
        "rewrites": [
          {
            "source": "**",
            "function": "redirectFunc"
          }
        ]
    }
}

除了指定 Frank van Puffelen 的回答中提到的規范鏈接之外。 我們還可以添加前端 JavaScript 代碼來執行這樣的實際重定向,而無需公開默認 url。

if (location.hostname.indexOf('custom.url') === -1) {
    location.replace("https://custom.url");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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