Node .htaccess Generator
This project simplifies the process of creating an .htaccess file for Apache web servers using Node.js. It is specifically designed for Next.js projects but can be adapted for other static site generators as well. The .htaccess file generated by this tool enables clean and SEO-friendly URLs for your static website.
Installation
To install the package as a development dependency, run the following command in your terminal:
npm install next-htaccess-generator --save-dev
Configuration
Before using the generator, you need to configure it by creating a jay.config.json file at the root of your project folder. This file should contain the following properties:
{
"buildPath": "./out",
"include404": false,
"outputPath": "out"
}
buildPath: Specifies the directory where your Next.js static build is located (e.g., ./out).
include404: A boolean value indicating whether to include rewrite rules for 404 pages. Set it to false if you want to exclude 404 pages.
outputPath: Defines the path where the generated .htaccess file should be saved.
Usage
After configuring the jay.config.json file, you can add a script to your package.json to generate the .htaccess file:
"scripts": {
"build-htaccess": "next-htaccess-generator build"
}
To generate the .htaccess file, run the following command:
npm run build-htaccess
This command scans the directory specified in buildPath for HTML files, generates URL rewrite rules for each file, and saves them to the outputPath directory.
How it Works
The generator script follows these steps:
- Reads the configuration from the
jay.config.json file.
- Recursively scans the specified
buildPath directory and collects all HTML file paths.
- Generates Apache URL rewrite rules for each HTML file.
- Optionally adds a catch-all rule to redirect unmatched URLs (unless
include404 is set to true).
- Writes the generated rules to an
.htaccess file in the specified outputPath directory.
The resulting .htaccess file can be placed in the root directory of your Apache web server, enabling clean and SEO-friendly URLs for your Next.js static build.