gatsby-plugin-htaccess
Version:
gatsby-plugin-htaccess creates a customizable htaccess-file on build containing the most important default settings for performance and security.
96 lines (74 loc) • 8.4 kB
Markdown
**Gatsby Plugin Htaccess** creates a “.htaccess”-file every time a gatsby build is triggered.
This file contains by default all basic rules specified by [Apache Server Configs v2.4.0](https://github.com/h5bp/server-configs-apache).
Additionally, the headers for HTTP caching are set as recommended by the Gatsby team: https://www.gatsbyjs.org/docs/caching/
Without any configuration the plugin will output these files:
- [/public/.htaccess](https://github.com/AndreasFaust/gatsby-plugin-htaccess/blob/master/defaults/htaccess)
- [/public/static/.htaccess](https://github.com/AndreasFaust/gatsby-plugin-htaccess/blob/master/defaults/static-htaccess)
1. Install the package with **npm** or **yarn**
`npm install gatsby-plugin-htaccess`
`yarn add gatsby-plugin-htaccess`
2. Add to plugins in your gatsby-config.js
```javascript
module.exports = {
plugins: ['gatsby-plugin-htaccess'],
}
```
| **Name** | **Type** | **Description** |
| :------------------- | :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RewriteBase | bool or string | Set to `true`, it will output `RewriteBase /`. You can also define a custom RewriteBase. |
| https | bool | Force https. |
| www | bool | Suppress/force “www” at the beginning of URLs. By default "www" is supressed. |
| DisallowSymLinks | bool | By default `Options +FollowSymlinks` is activated. <br> If your hoster does not allow this option, you can set DisallowSymLinks to `true`. |
| SymLinksIfOwnerMatch | bool | You can restrict follow symlinks to owner match. |
| host | string | Defines the domain, every other domain, that leads to your website, gets redirected to. Like **Redirecting Domains** from **redirects**, but without having to define the alternate hosts. |
| ErrorDocument | string | Define custom ErrorDocuments. Default: `ErrorDocument 404 /404/index.html` |
| redirect | array of objects and/or strings | **Fully customized redirects:** Can be defined as strings. <br> **Redirecting Domains:** If there are several domains pointing to your site, you can redirect them to your main domain by setting up objects with the keys `from` and `to`. <br> **Redirects from Gatsby:** Redirects from Gatsby are not automatically integrated. If you just want that, you should generally go with [gatsby-plugin-htaccess-redirects](https://github.com/GatsbyCentral/gatsby-plugin-htaccess-redirects). |
| custom | string | Custom Rules are added at the end of the file `public/.htaccess`. |
```javascript
module.exports = {
plugins: [
{
resolve: 'gatsby-plugin-htaccess',
options: {
RewriteBase: '/custom/',
https: true,
www: true,
SymLinksIfOwnerMatch: true,
host: 'www.mydomain.com', // if 'www' is set to 'false', be sure to also remove it here!
ErrorDocument: `
ErrorDocument 401 /error_pages/401.html
ErrorDocument 404 /error_pages/404.html
ErrorDocument 500 /error_pages/500.html
`,
redirect: [
'RewriteRule ^not-existing-url/?$ /existing-url [R=301,L,NE]',
{
from: 'my-domain.com',
to: 'mydomain.com',
},
{
from: 'my-other-domain.com',
to: 'mydomain.com',
},
],
custom: `
`,
},
},
],
}
```
Every contribution is very much appreciated.
Feel free to file bugs, feature- and pull-requests.
**If this plugin is helpful for you, star it on [GitHub](https://github.com/AndreasFaust/gatsby-plugin-htaccess).**
This plugin is based on [gatsby-plugin-htaccess-redirects](https://github.com/GatsbyCentral/gatsby-plugin-htaccess-redirects) by **Gatsby Central**.
The htaccess-directives are taken from [Apache Server Configs](https://github.com/h5bp/server-configs-apache) by **H5BP**.