Environment detection with .htaccess
You might want some `.htaccess` rules only to be applied in a certain environment. A common use case is that is to forward all traffic to HTTPS on your fortrabbit App in production, but not in your local development environment.
# 1. Make sure environment variables are set
In the dashboard with your fortrabbit environment, make sure an ENV var key-value pair like this is present:
ENVIRONMENT=productionshell
In some cases we have pre-populated that for you already. See environment variables topic for more details on how environment variables are handled here.
# 2. Setup .htaccess files
Now in the local code base of your project, setup a custom .htaccess file for each environment in the web root of your project:
.htaccessin general and for local development.htaccess_productionfor your fortrabbit App
This can also be extended to more environments. All .htaccess files should be under version control with Git.
# 3. Configure Composer
Add this to the script part of your composer.json in your local code base:
"scripts": { "post-install-cmd": [ "@php -r \" define('HTSRC', 'web/.htaccess_' . getenv('ENVIRONMENT')); echo (file_exists(HTSRC) && copy(HTSRC, 'web/.htaccess')) ? HTSRC.' copied to web/.htaccess'.PHP_EOL : ''; \"" ] }json
This Composer post install command will replace the contents of the .htaccess file with the contents of the file .htaccess_production, if that file is present and the environment variable ENVIRONMENT is set to production.
On fortrabbit, depending on build steps, usually each time you deploy with Git, composer install runs automatically.
You can extend the concept to have more stages of course (see our multi staging article). To add custom rules for a staging environment, like http-auth (see article), create a matching .htaccess_staging file and set the ENVIRONMENT accordingly.
This also assumes that the root path of your App is web, which is true for Craft CMS. In the Composer example above, replace the web with the root path of your project.
Found a tpyo?Edit