2013-01-18 74 views
2

我想将zend框架2放在子文件夹中。通过将整个应用程序放在一个子目录中,然后使用domain.com/path/to/public/index.php,框架应用程序开箱即用,但是我想避免使用较长的url并且我不想要一切都在我的DocumentRoot以外的公用文件夹。zend框架2在子目录

我以为有多个模块,但我有我的域下的其他类型的应用程序,不能公共文件夹是DocumentRoot,也不是我想重新创建所有我必须是一个模块只是为了静态页。理想情况下,保持骨架应用程序使用的常规目录结构将会很好。

我在RHEL和/或CentOS上使用了典型的LAMP堆栈。

+0

所以你想要保持骨架结构,但一个简短的网址,是所有? – Sam

+0

是的,在一个子目录 – Marty

+0

那么基本上它并不重要在哪里存储文件,你只需要配置你的Apache来设置你的'VirtualHost'到公共目录。然后,你需要做的就是调用'domain.com'。我不喜欢linux,所以我不能给你说明,但对我来说,这似乎是你正在寻找的所有 – Sam

回答

3

我不知道这是否是最好的方法,但这是一种适合我的方式。

阿帕奇virtualhosts.conf(你可以用一些修改,把这个在httpd.conf):

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    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(或其他源代码控制)来推送,而无需分割。

0

我在这样的.htaccess文件中添加的环境变量,设置您的.htaccess与ZF2_PATH环境变量的第一行(这是在您的应用程序文件夹的根目录)

SetEnv ZF2_PATH /home/homefolder/zendpath 
RewriteEngine On 
RewriteRule ^\.htaccess$ - [F] 
.... 
... 
+0

我认为这会改变Zend库的位置,但我想将我的整个应用程序放在一个子目录中。 – Marty