我的.htaccess
文件中有以下行,用于选择要使用的PHP版本:
AddType x-httpd-php53 .php
这在实时环境中运行良好,但不适用于测试环境并破坏网站。
有没有办法可以将它放在if语句或服务器的IP或网站的URL或其他什么东西上,以便它只在实时环境中生效?
答案 0 :(得分:21)
使用 Apache 2.4 ,使用<If>
/ <Else>
指令(在%{HTTP_HOST}
上?)很容易。
<If "%{HTTP_HOST} == 'foo'">
# configuration for foo
</If>
<Else>
# default configuration
</Else>
对于 Apache 2.2 及更早版本,我会在两个环境之一的Apache(-D
选项)的启动命令行中添加一个参数,然后测试它是否存在通过<IfDefine>
。
要在Windows上执行此操作,在Apache作为服务启动时,修改密钥注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Apache2.<VERSION>\ImagePath
通过附加-DFOO
。然后,你可以写:
<IfDefine FOO>
# configuration for foo
</IfDefine>
<IfDefine !FOO>
# default configuration
</IfDefine>
答案 1 :(得分:3)
您可以做的另一个替代方法是在测试环境中更改httpd.conf以使用&#34; .htaccess-test &#34;而不是&#34; .htaccess &#34;。
这可以通过修改httpd.conf并在任何块之外添加以下行来完成:
AccessFileName .htaccess-test
注意:您可以在&lt; VirtualHost&gt;内添加AccessFileName。阻止,如果您想将其应用于特定的VirtualHost。
这意味着测试环境将使用.htaccess-test,而生产环境将使用.htaccess。因此,您可以自由地单独配置每个环境。
然后在.htaccess旁边创建一个名为.htaccess-test的文件。 使用您的测试配置修改.htaccess-test,然后最终在测试环境服务器中重新启动Apache Web服务器。