【发布时间】:2012-10-04 21:34:51
【问题描述】:
我知道以前有人问过类似的问题,但我还没有找到适合我情况的任何真正具体的答案。
我有一个在多个环境(本地、开发、生产)上运行的 ExpressionEngine 站点,每个环境都需要不同的 .htaccess 规则:
所有环境
- Remove index.php
- 设置404文件
- 设置 301 重定向
发展
- 使用 .htpasswd 进行密码保护
- 强制使用 HTTPS 协议
- 使用X-Robots-Tag 阻止搜索引擎索引
生产
- 强制使用 HTTPS 协议
- 将非 www 子域重定向到 www
本地
- 没有唯一的规则。
我已经看到很多关于如何为每个模块设置特定环境的示例。就像 RewriteCond %{REQUEST_HOST} ^dev.myurl.com 用于 mod_rewrite 模块,tricks like this 用于 .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 配置文件中的设置的参考,但如果我正在处理第 3 方主机,这显然不是一个可行的选择。
那么这个天上掉馅饼是一厢情愿,还是可以做到?
【问题讨论】:
-
我遇到了this article,我还没有尝试过,但看起来很有希望。
标签: apache .htaccess mod-rewrite expressionengine environments