htaccess如果声明

时间:2012-12-21 14:48:04

标签: apache .htaccess

我的.htaccess文件中有以下行,用于选择要使用的PHP版本:

AddType x-httpd-php53 .php

这在实时环境中运行良好,但不适用于测试环境并破坏网站。

有没有办法可以将它放在if语句或服务器的IP或网站的URL或其他什么东西上,以便它只在实时环境中生效?

2 个答案:

答案 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服务器。