这是您之前可能遇到的Apache问题.我希望有一个源代码包可以部署到我的工作站,我的登台服务器和我的生产服务器,但是它可以根据URL的内容加载不同的.htaccess设置.
请注意,我使用的是带有IfModule调用的kludge,但这对我们的新生产服务器不起作用,因为它与我的登台服务器共享所有相同的模块.
注意我需要将SetEnv与这些重写捆绑在一起.目前,如果你使用RewriteCond,它只会绑定到下面的RewriteRule,而不是下面的SetEnv.
Mic*_*mer 15
而不是使用SetEnv,使用RewriteRule本身的环境变量设置功能:
RewriteCond %{HTTP_HOST} =foo.com
RewriteRule ^ - [E=VARNAME:foo]
RewriteCond %{HTTP_HOST} =bar.com
RewriteRule ^ - [E=VARNAME:bar]
Run Code Online (Sandbox Code Playgroud)
虽然我喜欢通过在启动时将标志传递给httpd进程并使用IfDefine块查找它们来做这种事情.
<IfDefine FOO>
SetEnv VARNAME foo
</IfDefine>
<IfDefine BAR>
SetEnv VARNAME bar
</IfDefine>
Run Code Online (Sandbox Code Playgroud)
在Ubuntu Linux上,IfDefine设置了变量
/etc/apache2/envvars
Run Code Online (Sandbox Code Playgroud)
并被称为APACHE_ARGUMENTS.所以,在该文件的底部我不得不添加:
export APACHE_ARGUMENTS="-D dev"
Run Code Online (Sandbox Code Playgroud)
...然后用以下方式退回服务器:
/etc/init.d/apache2 stop
/etc/init.d/apache2 start
Run Code Online (Sandbox Code Playgroud)
在其他系统上:
但是,有一篇关于这个主题的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.
| 归档时间: |
|
| 查看次数: |
15857 次 |
| 最近记录: |