7
votes

I know how to redirect/rewrite non-www to www using .htaccess in apache server. But I have no clue, about s3 bucket, and CloudFront. I have hosted the website on an s3 bucket using CloudFront.

How do I redirect all http://example.com/ requests to http://www.example.com

2
Welcome to Stack Overflow! Please provide more information so that we can better assist you. For example: Is example.com currently being served out of an Amazon S3 bucket? How are you using CloudFront? What have you tried so far?John Rotenstein

2 Answers

7
votes

There is a feature in S3 where you can to this. Select a bucket, in Properties under Static Web Hosting select Redirect all requests to another host name.

Read more here: https://aws.amazon.com/blogs/aws/root-domain-website-hosting-for-amazon-s3/

Update from comment: Add a cname in your domain setup for example.com to point to your bucket endpoint and a cname for your www.example.com to point to the cloudfront endpoint.

9
votes
  1. Create a www.example.com S3 bucket and place all the code in this bucket
  2. Create a example.com S3 bucket and set redirect to www.example.com as mentioned in https://aws.amazon.com/blogs/aws/root-domain-website-hosting-for-amazon-s3/
  3. Create CloudFront and configure with S3 bucket link of www.example.com and add cname entry only for www.example.com.
  4. In Route 53 for www.example.com point alias as CloudFront link related to S3 bucket
  5. In Route 53 for example.com point alias S3 bucket of example.com