我可以在 Apache 配置块中调用 PHP 脚本吗?

我可以在 Apache 配置块中调用 PHP 脚本吗?

我使用 PHP 作为 Apache 模块,而不是 CGI。对特定虚拟主机发出的每个请求都应导致 PHP 脚本的执行(“/srv/web/init.php”),我这样做如下:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /srv/web/

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/init\.php$
    RewriteRule .* /init.php [L]
</VirtualHost>

此虚拟主机除了执行 init.php 并将其输出返回给 Apache 以获得响应外,没有其他用途。我的问题是是否有更干净的方法来执行此操作 - 即绕过 Apache 的文件系统模拟,这样就不需要“公共”文件夹,因此 mod_rewrite 也没有必要。与调用 CGI 脚本非常相似,它会像这样:

<VirtualHost *:80>
    ServerName example.com

    PHPScript /srv/web/init.php
</VirtualHost>

我删除了上面的 DocumentRoot 指令,因为我的建议会使它变得毫无用处。我是不是只想将 Apache 模块变成 CGI,我应该只使用 CGI 吗?

答案1

不,您不能直接调用 PHP 脚本。您可以执行以下操作:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /srv/web/
    DirectoryIndex init.php
</VirtualHost>

答案2

不,

PHPScript 不是您可以使用的 Apache 指令。 http://httpd.apache.org/docs/2.2/mod/directives.html

您必须将该文件设为默认索引或对其进行 mod_rewrite。

答案3

您需要将该 php 文件设为默认索引文件,然后将其作为该站点上所有其他内容的前端控制器运行,这样所有 url 都将是 example.com/index.php/whatever - 您可以进行重写,将 index.php 部分隐藏给最终用户,但它仍然会在那里指导事情。

相关内容