Это может работать с использованием переписывания прокси в Netlify. Проблема будет заключаться в управлении статическими активами, если вы хотите одновременно запустить сайт из корневого пути домена.
Необходимы базовые знания о том, как CDN для Netilify работает с их функциями. пути, которые могут помочь.
- Все функции Netlify для вашего сайта находятся в конечной точке
/.netlify/functions/<function name>
- Нет способа прокси переписать путь с использованием подстановочных знаков, таких как
/*/bar
определить путь к функции bar.js
в качестве примера. Вам нужно, чтобы конечная точка для функции начиналась с некоторого известного пути.
Вы можете перейти от корневого пути, начиная с продукта, но это создаст свои собственные проблемы, когда / если выхотите иметь статические ресурсы в корневом пути, например /index.html
, но это можно сделать, перечислив все статические активы в конфигурации перенаправлений (не масштабируемых).
Вот оба примера того, что вам нужносделать для выполнения динамических частей в пути.
Вариант 1: из корня домена /<product-id>
_redirects
в корне сайта
/ /index.html 200
/* /.netlify/functions/product/:splat 200
добавитьФункция product.js
в папку функций
exports.handler = async function(event, context, callback) {
// path will come in as `/<some-product-id>/<rest>
const pathArr = event.path.split("/");
const productId = pathArr[1];
console.log(`Product id is ${productId}`);
const body = productId
? `<h1>Product id = ${productId}</h1>`
: "Missing product!";
callback(null, {
statusCode: 200,
body: `${body}`
});
};
Вариант 2: от /product
домена /product/<product-id>
_redirects
в корне сайта
/product/* /.netlify/functions/product/:splat 200
добавить функцию product.js
в папку функций
exports.handler = async function(event, context, callback) {
// path will come in as `/product/<some-product-id>/<rest>
const pathArr = event.path.split("/");
const productId = pathArr[2];
console.log(`Product id is ${productId}`);
const body = productId
? `<h1>Product id = ${productId}</h1>`
: "Missing product!";
callback(null, {
statusCode: 200,
body: `${body}`
});
};
Примечание: Вот репозиторий GitHub с главной веткой как Опция 2 и from-rootветвь как вариант 1 .