2013-01-18 107 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