Apache HtAccess AddHandler在servername或ip上有条件

时间:2012-10-18 14:45:25

标签: apache .htaccess

我正在Site5上托管我的登台和制作服务器,这是一个相对优秀的主机IMO。问题不在于它们的质量,而在于与PHP版本相关的问题。

我们的开发服务器使用的是PHP 5.3,这是一个很好的版本,5.4太新了,我们不想使用它的功能,还不够广泛。

问题是,Site5默认使用PHP 5.2,但您可以使用HTACCESS AddHandler语句更改为5.3。在Site5上工作正常,但是当我们将该语句保留在HTAccess文件中时,我们的开发服务器崩溃。

如果您使用SVN / Git来部署您的网络应用程序,您知道您始终在任何地方保留相同的文件,因此它会受到伤害,我似乎无法找到任何关于AddHandler的HTACCESS文件的条件语句。我可以轻松地在重写引擎上写条件,但我找不到任何看起来像这样的行为:

#<If SERVERNAME == "targethost.com">
#    PHP 5.3 configuration for site5
#    AddHandler application/x-httpd-php53 .php
#</If>

任何人都有解决方案吗?

2 个答案:

答案 0 :(得分:2)

我有同样的问题,无法在.htaccess中找到解决方案。您可能已经看到了this种解决方案,但它对我不起作用。

由于我使用Capistrano在Site5托管上部署我的应用程序,因此我决定在每次部署完成时通过向部署设置文件添加一行来更改.htaccess,该文件只运行shell命令:

run "echo 'AddHandler application/x-httpd-php53 .php' >> #{release_path}/public/.htaccess"

注意:#{release_path}是我应用的根路径。

我问过Site5对此的支持,但不幸的是他们不能建议我。

答案 1 :(得分:2)

自Apache 2.4起,您可以在.htaccess文件中使用此表达式:

<If "%{HTTP_HOST} == 'example.com'">
    AddHandler application/x-httpd-php53 .php
</If>

https://httpd.apache.org/docs/2.4/expr.html#examples

请注意,这在Apache 2.2中不起作用。