【问题标题】:Apache HtAccess AddHandler Conditional on servername or ipApache HtAccess AddHandler 以服务器名或 ip 为条件
【发布时间】:2012-10-18 14:45:25
【问题描述】:

我在 Site5 托管我的登台和生产服务器,这是一个相对较好的托管 IMO。问题不在于它们的质量,而在于与 PHP 版本相关的问题。

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

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

如果您使用 SVN/Git 来部署您的 Web 应用程序,您就会知道您总是在任何地方保留相同的文件,这就是它的痛处,我似乎找不到任何关于 AddHandler 的 HTACCESS 文件的条件语句的信息。我可以轻松地在重写引擎上编写条件,但我找不到任何看起来和行为如下的东西:

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

谁有解决办法?

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    从 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 中不起作用。

    【讨论】:

      【解决方案2】:

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

      由于我使用 Capistrano 在 Site5 主机上部署我的应用程序,我决定在每次部署完成时更改 .htaccess,方法是在我的部署设置文件中添加一行,该文件只需运行一个 shell 命令:

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

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

      我就此向 Site5 的支持人员咨询过,但遗憾的是他们无法向我推荐一个。

      【讨论】:

      • 谢谢!为我工作:)
      • @RonaldAraújo 很高兴这篇旧帖子对您有所帮助!
      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 2011-10-08
      • 2011-07-09
      • 2018-05-04
      • 1970-01-01
      • 2011-05-19
      • 2013-12-06
      • 1970-01-01
      相关资源
      最近更新 更多