我知道以前有人问过类似的问题,但我还没有找到适合我的情况的任何真正具体的答案。
我有一个在多个环境(本地、开发、生产)上运行的 ExpressionEngine 站点,每个环境都需要不同的 .htaccess 规则:
所有环境
- 删除 index.php
- 设置404文件
- 设置 301 重定向
发展
- 使用 .htpasswd 进行密码保护
- 强制 HTTPS 协议
- 使用X-Robots-Tag防止搜索引擎索引
生产
- 强制 HTTPS 协议
- 将非 www 子域重定向到 www
当地的
- 没有独特的规则。
我已经看到了很多关于如何为每个模块设置特定环境的示例。就像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 配置文件中的设置的参考,但如果我正在处理 3rd 方主机,这显然不是一个可行的选择。
那么这个天上掉馅饼是一厢情愿,还是可以做到呢?