这是您之前可能遇到的Apache问题.我希望有一个源代码包可以部署到我的工作站,我的登台服务器和我的生产服务器,但是它可以根据URL的内容加载不同的.htaccess设置.
请注意,我使用的是带有IfModule调用的kludge,但这对我们的新生产服务器不起作用,因为它与我的登台服务器共享所有相同的模块.
注意我需要将SetEnv与这些重写捆绑在一起.目前,如果你使用RewriteCond,它只会绑定到下面的RewriteRule,而不是下面的SetEnv.
而不是使用SetEnv,使用RewriteRule本身的环境变量设置功能:
RewriteCond %{HTTP_HOST} =foo.com RewriteRule ^ - [E=VARNAME:foo] RewriteCond %{HTTP_HOST} =bar.com RewriteRule ^ - [E=VARNAME:bar]
虽然我喜欢通过在启动时将标志传递给httpd进程并使用IfDefine块查找它们来做这种事情.
SetEnv VARNAME foo SetEnv VARNAME bar
在Ubuntu Linux上,IfDefine
设置了变量
/etc/apache2/envvars
并被称为APACHE_ARGUMENTS
.所以,在该文件的底部我不得不添加:
export APACHE_ARGUMENTS="-D dev"
...然后用以下方式退回服务器:
/etc/init.d/apache2 stop /etc/init.d/apache2 start
在其他系统上:
但是,有一篇关于这个主题的Debian文章在这里讨论了这个问题.在该示例中,要编辑的文件是/ etc/default/apache2并且调用该变量APACHE_DEFINES
.
同样,在一些系统上它被命名为一个变量OPTIONS
被设置中/etc/sysconfig/httpd
.
因此,您真正需要做的是在apache2ctl文件中查找start部分.所以,首先做一个whereis apache2ctl
找到此脚本,猫出来,并找到在它的Apache2指令开始部分,它是否能通过变量是OPTIONS
,APACHE_ARGUMENTS
,APACHE_DEFINES
,或别的东西.然后,看看哪个文件,你需要通过实验与任编辑/etc/sysconfig/httpd
,/etc/default/apache2
或/etc/apache2/envvars
.