Перенаправление на личный домен хостинга Firebase

Я установил собственный домен с хостингом Firebase (например, myapp.domain.com).

Как можно перенаправить (или отключить) URL-адрес хостинга Firebase по умолчанию (например, myapp.firebaseapp.com), чтобы приложение было доступно только из личного домена?


person bostondv    schedule 10.12.2015    source источник


Ответы (3)


Вы не можете отключить поддомен. Ваше приложение всегда будет доступно в https://myapp.firebaseapp.com и любом личном домене, который вы настроили.

Чтобы перенаправить людей, вы можете добавить canonical ссылку в свой HTML:

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

Подробнее об этом читайте в Укажите свой канонический в Центре веб-мастеров Google. Блог.

person Frank van Puffelen    schedule 10.12.2015
comment
Я добавил это в свой index.html ‹head› и не перенаправляюсь при использовании URL-адреса, предоставленного firebase. Это только для поисковых систем? (например, я буду перенаправлен, если щелкну по нему с помощью Google?) - person Jonathan002; 11.06.2018
comment
@ Jonathan002, вы можете добавить перенаправление JavaScript, как указано в моем ответе, в дополнение к добавлению канонической ссылки. - person Abdul Rauf; 31.05.2020

Вы можете использовать функции Firebase.

Бесплатно для 125 000 вызовов в месяц - 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"
          }
        ]
    }
}
person Seht    schedule 20.01.2020

В дополнение к указанию канонической ссылки, как указано в ответе Фрэнка ван Пуффелена. Мы также можем добавить внешний код JavaScript для выполнения фактического перенаправления, как это, без раскрытия URL-адреса по умолчанию.

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