Skip to content

Commit 29b2ffb

Browse files
authored
Merge pull request #19 from chris-qa-org/support-publii-pretty-urls
Support Publii 'Pretty URLs'
2 parents 0dd84a2 + 027fe19 commit 29b2ffb

File tree

5 files changed

+26
-0
lines changed

5 files changed

+26
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Terraform module to host a static site generated by Publii
7878
| <a name="input_cloudfront_enable_ipv6"></a> [cloudfront\_enable\_ipv6](#input\_cloudfront\_enable\_ipv6) | Enable IPv6 on CloudFront | `bool` | `true` | no |
7979
| <a name="input_cloudfront_enable_waf"></a> [cloudfront\_enable\_waf](#input\_cloudfront\_enable\_waf) | Enable CloudFront WAF | `bool` | `true` | no |
8080
| <a name="input_cloudfront_tls_certificate_arn"></a> [cloudfront\_tls\_certificate\_arn](#input\_cloudfront\_tls\_certificate\_arn) | CloudFront TLS certificate ARN (must be created in us-east-1 region) | `string` | n/a | yes |
81+
| <a name="input_enable_publii_pretty_urls"></a> [enable\_publii\_pretty\_urls](#input\_enable\_publii\_pretty\_urls) | If you hae enabled 'Pretty URLs' in Publii, set this to true | `bool` | `false` | no |
8182
| <a name="input_s3_bucket_acl"></a> [s3\_bucket\_acl](#input\_s3\_bucket\_acl) | S3 bucket ACL | `string` | `"private"` | no |
8283
| <a name="input_site_url"></a> [site\_url](#input\_site\_url) | The desired site URL | `string` | n/a | yes |
8384

cloudfront-frontend-viewer-request-function.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
data "template_file" "cloudfront_frontend_viewer_request_function" {
22
template = file("${path.module}/cloudfront-functions/viewer-request.js")
3+
4+
vars = {
5+
append_empty_extension = local.enable_publii_pretty_urls ? "/" : ""
6+
}
37
}
48

59
resource "aws_cloudfront_function" "frontend_viewer_request" {

cloudfront-functions/viewer-request.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
1+
%{ if append_empty_extension != "" ~}
2+
function appendEmptyExtension(filePath, extension) {
3+
if(filePath != "/" && filePath.indexOf('.') == -1) {
4+
return filePath.concat("", extension);
5+
}
6+
return filePath;
7+
}
8+
%{ endif ~}
19
function handler(event) {
210
// default variables
311
var req = event.request;
412
var clientIp = event.viewer.ip;
513

614
// set true-client-ip header
715
req.headers['true-client-ip'] = {value: clientIp};
16+
%{~ if append_empty_extension != "" ~}
17+
// append empty extension
18+
var newUri = appendEmptyExtension(req.uri, "${append_empty_extension}");
19+
req.uri = newUri.replace("\/\/", "/", newUri);
20+
%{~ endif ~}
21+
822

923
// return request
1024
return req;

locals.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ locals {
66
cloudfront_enable_ipv6 = var.cloudfront_enable_ipv6
77
cloudfront_enable_waf = var.cloudfront_enable_waf
88
cloudfront_enable_apex_to_www_redirect = var.cloudfront_enable_apex_to_www_redirect
9+
enable_publii_pretty_urls = var.enable_publii_pretty_urls
910
}

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,9 @@ variable "cloudfront_enable_apex_to_www_redirect" {
3131
type = bool
3232
default = true
3333
}
34+
35+
variable "enable_publii_pretty_urls" {
36+
description = "If you hae enabled 'Pretty URLs' in Publii, set this to true"
37+
type = bool
38+
default = false
39+
}

0 commit comments

Comments
 (0)