將檢視器重新導向至新的 URL - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將檢視器重新導向至新的 URL

下列檢視器請求函數會產生回應,以便在請求來自特定國家/地區URL時,將檢視器重新導向至特定國家/地區。此函數會依賴 CloudFront-Viewer-Country 標頭的值來判斷檢視者所在的國家/地區。

重要

若要讓此函數運作,您必須設定 , CloudFront 將CloudFront-Viewer-Country標頭新增至快取政策原始伺服器請求政策 中允許的標頭,以將標頭新增至傳入的請求

當檢視器請求來自德國URL時,此範例會將檢視器重新導向至德國特定的 。如果檢視者請求不是來自德國,函數會傳回未修改的原始請求。

請參閱 上的此範例 GitHub

JavaScript runtime 2.0
async function handler(event) { const request = event.request; const headers = request.headers; const host = request.headers.host.value; const country = Symbol.for('DE'); // Choose a country code const newurl = `https://${host}/de/index.html`; // Change the redirect URL to your choice if (headers['cloudfront-viewer-country']) { const countryCode = Symbol.for(headers['cloudfront-viewer-country'].value); if (countryCode === country) { const response = { statusCode: 302, statusDescription: 'Found', headers: { "location": { "value": newurl } } } return response; } } return request; }
JavaScript runtime 1.0
function handler(event) { var request = event.request; var headers = request.headers; var host = request.headers.host.value; var country = 'DE' // Choose a country code var newurl = `https://${host}/de/index.html` // Change the redirect URL to your choice if (headers['cloudfront-viewer-country']) { var countryCode = headers['cloudfront-viewer-country'].value; if (countryCode === country) { var response = { statusCode: 302, statusDescription: 'Found', headers: { "location": { "value": newurl } } } return response; } } return request; }

如需重寫和重新導向的詳細資訊,請參閱 AWS 維修廠工作室中的使用邊緣函數處理重寫和重新導向