我对如何配置依赖于环境的参数有一个奇怪的想法。您可以在Rails的config / database.yml
中找到类似的参数在我目前的项目中,我使用PHP和Litespeed Web Server(虽然相同的技术适用于PHP + Apache),我认为......“为什么不使用mod_rewrite呢?”。我为每个环境配置了单独的虚拟主机配置(目前开发/生产)
我现在拥有的是:
RewriteRule (.*) $1 [env=development:1]
用于开发环境vhost。但如果它会是这样的呢?
RewriteRule (.*) $1 [env=development:1,env=mysql_host:localhost,env=mysql_port:3306,env=mysql_user:root,env=mysql_pass:,env=mysql_db:mydbname]
它会有意义还是会引起一些问题?你觉得怎么样?
答案 0 :(得分:3)
我不相信重写规则是一个特别直观的地方来放置这样的配置信息。也许我误解了一些东西,但是数据库连接的开发,登台和生产环境之间的唯一区别是什么?通常代码也是不同的(至少进行一次更改),因此如果您使用的是修订控制系统,我认为拥有您复制的模板配置文件(database.cfg.template)可能更好一点。 (并告诉您的修订控制系统忽略)并修改(到database.cfg)。然后很明显这些信息在哪里。
答案 1 :(得分:1)
你是对的 - 这是一个奇怪的想法。
IMO,这对mod_rewrite来说非常糟糕。没错,配置信息属于机器,而不是代码库(我看到人们一直在犯的错误),但它也不一定属于Web服务器配置。
我建议使用不受版本控制管理的配置文件。
答案 2 :(得分:0)
如果要在vhost中设置环境,可以执行类似
的操作php_value ENV "development"
然后从$_SERVER
数组
答案 3 :(得分:0)
首先,如果您实际上没有更改URL,请不要使用$ 1作为替换,只需使用短划线即可。根据文档:
破折号表示没有替代品 应该执行(现有的路径 通过未触动过)。这是 当一面旗帜(见下文)需要时使用 在不改变路径的情况下应用。
但实际上,我认为答案是mod_env。 SetEnv指令可以放在你的< VirtualHost>中。阻止,避免不必要的RewriteRule foo。
答案 4 :(得分:0)