我不知道这是否是最好的方法,但这是一种对我有用的方法。
Apache virtualhosts.conf(您可以将其放入 httpd.conf 并进行一些修改):
<VirtualHost *:80>
ServerAdmin webmaster@domain.com
DocumentRoot /var/www/html/apps
ServerName apps.domain.com:80
ServerAlias www.apps.domain.com
UserDir Disabled
ErrorLog logs/domain_error_log
Options FollowSymLinks
<Directory /var/www/html/apps/subdirectory/>
#same stuff in standard zf2 .htaccess file
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</Directory>
应用程序的位置:
/var/www/zf2_app
符号链接:
ln -s /var/www/zf2_app/public/ /var/www/html/apps/subdirectory
有几点需要注意: Directory 指令基于文件系统路径而不是 URI;这是我忘记的 Apache 文档中的一行,因为如果您在 VirtualHost 指令中使用 mod_rewrite 它是基于 URI 的。此外,Options FollowSymLinks 必须打开,符号链接才能工作,mod_rewrite 才能在目录指令中工作。
重新加载 httpd 后,我可以使用以下命令浏览到我的 zf2 应用程序:apps.domain.com/subdirectory/module
这使我能够保持常规的 zf2 骨架应用程序结构。此外,通过将它们放在一起,我可以使用 git(或其他源代码控制)进行推送,而无需拆分。