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

时间:2016-02-02 02:52:11

标签: php apache .htaccess base-url

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

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

<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]

到目前为止,ZF应用程序的所有标准。

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

我需要做些什么来改变这项工作?什么是最佳做法?

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

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,所以在玩了一下后我找到了简单的解决方案。只需在Apache vhost配置中添加别名即可:

<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>