如何通过Chef在Apache中重写URL?

如何通过Chef在Apache中重写URL?,apache,mod-rewrite,chef-infra,Apache,Mod Rewrite,Chef Infra,我在Chef中制作了一本食谱,用于安装web应用程序、Apache和PHP。 此web应用程序有一个PHP文档,客户端可在此URL中访问该文档: http://localhost/www-app/ClientFE 我有个问题。默认情况下,PHP将只解释具有PHP扩展名的文档,由于我的URL没有扩展名,它将被解释为文本。我无法更改文件的扩展名,因为客户端(也是软件)不应修改 我想实现的是让PHP解释该文档,就我所研究的内容而言,至少可以通过三种方式实现:适当配置PHP、创建别名、创建重写规则

我在Chef中制作了一本食谱,用于安装web应用程序、Apache和PHP。 此web应用程序有一个PHP文档,客户端可在此URL中访问该文档:

 http://localhost/www-app/ClientFE
我有个问题。默认情况下,PHP将只解释具有PHP扩展名的文档,由于我的URL没有扩展名,它将被解释为文本。我无法更改文件的扩展名,因为客户端(也是软件)不应修改

我想实现的是让PHP解释该文档,就我所研究的内容而言,至少可以通过三种方式实现:适当配置PHP、创建别名、创建重写规则

首先:我可以配置PHP来解释所需的文档:

<FilesMatch "/www-app/ClientFE">
    SetHandler application/x-httpd-php
</FilesMatch>
第三:我可以用mod_alias以类似于mod_rewrite的方式完成它

这三个对我来说很好,但我的问题是:如何和厨师一起做?我还没有找到关于它的有用文档,我已经试着把它放在我的食谱中(我在互联网上找到了它们,但它们不起作用):

还有这个

apache_module "alias" do
    source "/www-app/ClientFE"
    target "/www-app/ClientFE.php"
end

我公司的一些人提出了两种有效的解决方案:

  • 将配置放在web应用程序中的.htaccess中。这对我很有效,并且允许使用我上面提到的替代方案

  • 什么都不要做!Apache2 cookbook中的Multiviews选项在默认情况下是启用的,它允许Apache解析URL
    http://localhost/A
    as
    http://localhost/A.php
    。。。。我的意思是,如果Apache被问及文件A,但它没有找到,那么它将搜索A.php


  • 从这两个选项中,我选择了后者,是的,它是有效的。它以前不起作用,因为在我多次尝试中,我创建了A和A.php,在这种情况下,多视图没有任何效果。

    此外,我发现,如果尝试访问:但根目录中没有文件夹A,但根目录中存在文件A.php,那么脚本A.php将被就地调用:O
    apache_rewrite do
        source "/www-app/ClientFE"
        target "/www-app/ClientFE.php"
    end
    
    apache_module "alias" do
        source "/www-app/ClientFE"
        target "/www-app/ClientFE.php"
    end