0

我在 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_write 来完成(我将不得不重命名网络应用程序中的填充,这对我来说也是可以接受的):

RewriteCond ^/www-app/ClientFE /www-app/ClientFE.php

第三:我可以以与 mod_rewrite 类似的方式使用 mod_alias 来完成。

3 对我有好处,但我的问题是:如何用 Chef 做这些?我无法找到有关它的有用文档,并且我已经尝试将其放入我的食谱中(我在互联网上找到了它们,但它们没有用):

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
4

1 回答 1

0

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

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

  2. 没做什么!碰巧 Apache2 食谱中的 Multiviews 选项默认启用,它允许 Apache 将 URL 解析http://localhost/Ahttp://localhost/A.php ...。我的意思是,如果 Apache 被问及文件 A,但它没有找到它,那么它将搜索代替 A.php。

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

于 2013-09-09T19:55:58.540 回答