Created
August 15, 2018 14:46
-
-
Save iheartmedia-matt/253ccb6183fdeaa5619f615f2cb5a58b to your computer and use it in GitHub Desktop.
Apache .htaccess SSL React Router
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<ifModule mod_rewrite.c> | |
####################################################################### | |
# GENERAL # | |
####################################################################### | |
# Make apache follow sym links to files | |
Options +FollowSymLinks | |
# If somebody opens a folder, hide all files from the resulting folder list | |
IndexIgnore */* | |
####################################################################### | |
# REWRITING # | |
####################################################################### | |
# Enable rewriting | |
RewriteEngine On | |
# If its not HTTPS | |
RewriteCond %{HTTPS} off | |
# Comment out the RewriteCond above, and uncomment the RewriteCond below if you're using a load balancer (e.g. CloudFlare) for SSL | |
# RewriteCond %{HTTP:X-Forwarded-Proto} !https | |
# Redirect to the same URL with https://, ignoring all further rules if this one is in effect | |
RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [R,L] | |
# If we get to here, it means we are on https:// | |
# If the file with the specified name in the browser doesn't exist | |
RewriteCond %{REQUEST_FILENAME} !-f | |
# and the directory with the specified name in the browser doesn't exist | |
RewriteCond %{REQUEST_FILENAME} !-d | |
# and we are not opening the root already (otherwise we get a redirect loop) | |
RewriteCond %{REQUEST_FILENAME} !\/$ | |
# Rewrite all requests to the root | |
RewriteRule ^(.*) / | |
</ifModule> | |
<IfModule mod_headers.c> | |
# Do not cache sw.js, required for offline-first updates. | |
<FilesMatch "sw\.js$"> | |
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" | |
Header set Pragma "no-cache" | |
</FilesMatch> | |
</IfModule> |
Thank you man
Saved me, thanks!!
This is amazing! Saved me so much time!
I would also like to remove the "www" from urls and redirect to the non-www counterpart. I'm pretty green with .htaccess, so I'm sure I'm doing something wrong. I tried this and it's not working:
...
# Enable rewriting
RewriteEngine On
#www to non
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?domain\.com)$ [NC]
RewriteRule ^(.+?)/?$ http://%1/$1/ [R=301,L]
# If its not HTTPS
RewriteCond %{HTTPS} off
...
Thanks. You are so good
For people that serve the react app in a subdirectory, here is the solution:
Comment out or remove out these two lines bellow
# Rewrite all requests to the root
# RewriteRule ^(.*) /
Add this rewrite rule to point to index.html
# Rewrite all requests to the index.html
RewriteRule ^ index.html [QSA,L]
I have an "ERR_TOO_MANY_REDIRECTS" error with all the solutions found, has anyone ever had this problem?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you very much! I spent a lot of time to find the answer and it's here !