在 Apache 下的 url 子文件夹下运行 ZF 应用程序的正确方法是什么


What is the correct way to run ZF application under url sub-folder under Apache?

这可能是一个常见的问题,但我找不到答案。

我有一个使用 Zend Framework 的 PHP 应用程序。假设我们在my-app主机下运行应用程序,源文件位于本地文件系统的/my-path/my-app下。下面是 Apache 虚拟主机配置:

<VirtualHost *:80>
ServerName my-app
DocumentRoot "/my-path/my-app/public"
<Directory "/my-path/my-app/public">
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

目录中.htaccess文件包含以下重写规则public

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

到目前为止,所有采埃孚应用的标准。

现在,我需要在 url 子文件夹(例如 foo )下运行此应用程序,即在 http://my-app/foo/ 下而不是 http://my-app/ 下。

我需要更改什么才能完成这项工作?最佳实践是什么?

假设从应用程序生成具有基本 URL 的 URL 不是问题。并且还假设应用程序将重写所有URL,包括应用程序的css/js源的链接。

谢谢!

好的,所以在玩了一会儿之后,我找到了简单的解决方案。所需要的只是在 Apache 虚拟主机配置中添加一个别名:

<VirtualHost *:80>
ServerName my-app
DocumentRoot "/my-path/my-app/public"
<Directory "/my-path/my-app/public">
    AllowOverride All
    Require all granted
</Directory>
Alias /foo /my-path/my-app/public
</VirtualHost>