Skip to content

Instantly share code, notes, and snippets.

@davemackintosh
Last active September 6, 2024 18:36
Show Gist options
  • Save davemackintosh/8ac35fff747dbf2c95e1 to your computer and use it in GitHub Desktop.
Save davemackintosh/8ac35fff747dbf2c95e1 to your computer and use it in GitHub Desktop.
Working .htaccess for Single Page Apps
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.html [QSA,L]
</ifModule>
@xims
Copy link

xims commented Mar 12, 2018

If you're like me and arrived at this page but the code gives you Server Error, try the following, it helped me:
Change 'QA' to 'QSA'
So the total lines look like:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.html [QSA,L]

@wett1988
Copy link

wett1988 commented Mar 20, 2018

This code worked at me at the error on path like: http://mysite.com/category/:id:

RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

@Dron84
Copy link

Dron84 commented Aug 6, 2019

Hi every one! how do redirect to https and all this
I did as below but the server said too many redirects

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

@Mateusz-Lawniczak
Copy link

Mateusz-Lawniczak commented Sep 9, 2019

hi take this

RewriteEngine On
RewriteBase /y/directory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) ./ [QSA,L]

@davidquintard
Copy link

Thank you very much!
You saved my life !!!!!!!!
This should be included in the official documentation.

@davidquintard
Copy link

All people who need to use vuejs as static on apache server need to configure a correct htaccess.
However htaccess from documentation doesnt work:
https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations

Regards

@HamidReazaNikoonia
Copy link

Hi every one! how do redirect to https and all this
I did as below but the server said too many redirects

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

thanks bro

@Rezasabz
Copy link

Rezasabz commented Aug 12, 2020

Hi my friend, go this routes : /etc/apache2/sites-enabled/000-default.conf And add the following code :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.html$ - [L]
RewriteCond /var/www/html/%{REQUEST_FILENAME} !-f
RewriteCond /var/www/html/%{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

It must be done.

@manang
Copy link

manang commented Oct 24, 2022

hi, I need to redirect using the parameters, do you know how I can do?

The problem is that if I redirect to index, in the canonical name I lose the parameters and for the seo, it is not a good thing.
so, for example
If I use this rule:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /auto [QSA,L]
if my input url is https://myserver.com/auto/alfaromeo and i redirect to auto,
the page is correct, but the canonical name is
https://myserver.com/auto/
is there a way to pass the parameter, too?
Thanks a lot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment