htaccess if语句

我有我的.htaccess文件中的以下行来select使用哪个版本的PHP:

 AddType x-httpd-php53 .php 

这在实际环境中工作良好,但不适用于testing环境并打破了网站。

有没有办法,我可以把它放在一个if语句或通过服务器的IP或网站的URL或一些东西,只有在现场环境中生效?

使用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> 

你可以做的另一种方法是在测试环境中更改httpd.conf,使用“ .htaccess-test ”而不是“ .htaccess ”。

这只需修改httpd.conf并在任何块的外面添加以下行:

 AccessFileName .htaccess-test 

注意:如果要将其应用于特定的VirtualHost,可以在<VirtualHost>块中添加AccessFileName。

这意味着测试环境将使用.htaccess-test,而生产环境将使用.htaccess。 因此,您可以自由配置每个环境。

然后在.htaccess旁边创建一个名为.htaccess-test的文件。 用你的测试配置修改.htaccess-test,最后在测试环境服务器上重新启动Apache Web服务器。