2

我只是对如何配置与环境相关的参数有一个奇怪的想法。您可以在 Rails 的 config/database.yml 中找到类似的参数

在我当前的项目中,我使用 PHP 和 Litespeed Web 服务器(尽管同样的技术适用于 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]

这有意义还是会引起一些问题?你怎么看?

4

5 回答 5

3

我不相信重写规则是一个特别直观的地方来放置这样的配置信息。也许我误解了一些东西,但开发、登台和生产环境之间的唯一区别是数据库连接吗?通常代码也是不同的(至少一旦进行了更改),因此如果您使用的是修订控制系统,我认为拥有一个您复制的模板配置文件(database.cfg.template)可能是一个更好的主意(并告诉您的版本控制系统忽略)和修改(到 database.cfg)。那么很明显这些信息在哪里。

于 2008-12-14T10:56:02.173 回答
1

你是对的——这是一个奇怪的想法。

IMO,这对 mod_rewrite 来说真的很糟糕。的确,配置信息属于机器,而不是代码库(我看到人们一直犯的错误),但它也不一定属于网络服务器配置。

我会推荐一个不受版本控制管理的配置文件。

于 2008-12-14T23:51:27.273 回答
0

如果您想在虚拟主机中设置环境,您可以执行类似的操作

php_value ENV "development"

然后从$_SERVER数组中读取

于 2008-12-21T06:25:07.673 回答
0

首先,如果您实际上并没有更改 URL,请不要使用 $1 作为替换,只需使用破折号。根据文档:

破折号表示不应执行替换(现有路径通过未触及)。当需要在不更改路径的情况下应用标志(见下文)时使用此选项。

但实际上,我认为答案是mod_env。SetEnv 指令可以放在 <VirtualHost> 块中,避免不必要的 RewriteRule foo。

于 2009-01-02T04:23:20.220 回答
0

您应该定义当前环境的最佳且唯一的地方是引导程序。

查看symfonyagavi引导文件。

于 2009-01-02T08:08:55.113 回答