Я знаю, что подобные вопросы были заданы раньше, но я не нашел конкретных ответов для моей ситуации.
У меня есть сайт ExpressionEngine, работающий в нескольких средах (локальный, dev, production), и для каждой из этих сред требуются разные правила .htaccess:
Все среды
- Удалить index.php
- Установить файл 404
- Установить 301 Переадресация
Разработка
- Защита паролем с .htpasswd
- Протокол Force HTTPS
- Запретить индексирование поисковой системы с помощью X-Robots-Tag
Продукция
- Протокол Force HTTPS
- Переадресация недокументов www.
Local
- Нет уникальных правил.
Я видел много примеров того, как вы можете установить определенные среды для каждого модуля. Как RewriteCond %{REQUEST_HOST} ^dev.myurl.com
для модуля mod_rewrite и трюки, подобные этому для требований .htpasswd.
Но мне бы хотелось, чтобы какой-то способ установить глобальные переменные среды, а затем повторно использовать эти переменные в файле .htaccess для среды. Чтобы использовать псевдо-javascript в качестве примера, выполните следующие действия:
var local = 'mysite.local';
var development = 'dev.mysite.com';
var production = 'www.mysite.com';
// Global .htaccess rules
if(environment == local){
// Local environment .htaccess rules
}
if(environment == development){
// Development environment .htaccess rules
}
if(environment == production){
//Production envirotnment .htaccess rules
}
Таким образом, все правила, относящиеся к среде, группируются вместе, создавая действительно чистый файл, и только одна переменная нуждается в изменении при изменении среды.
Я видел несколько ссылок на изменение настроек в конфигурационных файлах Apache, но, очевидно, это не жизнеспособный вариант, если я имею дело с сторонними хостами.
Итак, это задумчивое размышление в стиле "пирог в небе", или это можно сделать?