How to Fix Laravel HTTPS Redirect Loop on Amazon Elastic Beanstalk/Load Balancer/Proxy

If you are forcing HTTPS on routes in Laravel but are having issues with a redirect loop and your app is behind a proxy, load balancer, or something like Elastic Beanstalk, try adding this to your .htaccess file:


#Fixes HTTPS Redirect Loop
SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS

Many load balancers will accept HTTPS traffic and forward it internally as HTTP but pass an environment variable stating that the traffic received at the load balancer/proxy was intended for HTTPs. What this line does is checks for that environment variable X-FORWARDED-PROTO and if it is set to HTTPS remaps the request to HTTPS behind the proxy or load balancer.