fix(cloudfront): rewrite extensionless paths to index

- append /index.html for extensionless requests
- document CloudFront Function behavior in README
This commit is contained in:
Daisuke Nakahara 2026-02-01 17:34:11 +09:00
parent 8cd30da394
commit a7b0752b55
2 changed files with 12 additions and 3 deletions

View file

@ -11,6 +11,7 @@ It includes CloudFormation templates for provisioning all necessary components,
- **Lambda (Go)**: Custom deployment logic executed within the pipeline - **Lambda (Go)**: Custom deployment logic executed within the pipeline
- **ECR**: Container repository for Lambda packaging - **ECR**: Container repository for Lambda packaging
- **Secrets Manager**: Secure storage for deployment keys - **Secrets Manager**: Secure storage for deployment keys
- **CloudFront Function**: Appends `/index.html` for extensionless paths (e.g. `/blog/2`, `/tags`)
All infrastructure is declaratively managed via CloudFormation templates under `infra/cfn/`. All infrastructure is declaratively managed via CloudFormation templates under `infra/cfn/`.

View file

@ -20,10 +20,18 @@ Resources:
function handler(event) { function handler(event) {
var request = event.request; var request = event.request;
var uri = request.uri; var uri = request.uri;
if (uri.endsWith("/")) { if (uri === "" || uri === "/") {
request.uri += "index.html";
} else if (uri === "") {
request.uri = "/index.html"; request.uri = "/index.html";
return request;
}
if (uri.endsWith("/")) {
request.uri = uri + "index.html";
return request;
}
var lastSlash = uri.lastIndexOf("/");
var lastDot = uri.lastIndexOf(".");
if (lastDot <= lastSlash) {
request.uri = uri + "/index.html";
} }
return request; return request;
} }