2010-01-27 41 views
6

我試圖配置Apache在同一個域下配置不同的symfony項目(每個都有自己的框架安裝),但是我無法使用文件夾工作。如何配置Apache在同一個域中有兩個symfony項目(不使用子域)?

這是我想擁有的一切:

  • mydomain.com/projectone/
  • mydomain.com/projecttwo/

我可以使它工作使用的子域,但不是我的首選解決方案,因爲我最終有瘋狂的子域名,如:

  • projectone.mydomain.com
  • backend.projectone.mydomain.com
  • projecttwo.mydomain.com
  • backend.projecttwo.mydomain.com

我使用Apache中這個配置,使其與子域工作:

<VirtualHost 127.0.0.1:8080> 
    ServerName projectone.mydomain.com 
    DocumentRoot "/home/projectone/web" 
    DirectoryIndex frontend.php 
    <Directory "/home/projectone/web"> 
    Options -Indexes IncludesNOEXEC FollowSymLinks -MultiViews 
    AllowOverride None 
    Allow from All 

    RewriteEngine On 
    # we check if the .html version is here (caching) 
    RewriteRule ^$ index.html [QSA] 
    RewriteRule ^([^.]+)$ $1.html [QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    # no, so we redirect to our front web controller 
    RewriteRule ^(.*)$ frontend.php [QSA,L] 
    </Directory> 

    Alias /sf /home/projectone/lib/vendor/symfony/data/web/sf 
    <Directory "/home/projectone/lib/vendor/symfony/data/web/sf"> 
    AllowOverride All 
    Allow from All 
    </Directory> 
</VirtualHost> 

有關如何實現文件夾解決方案的任何想法?

由於提前, Eneko

+0

這對我很有趣......我實際上更喜歡「複雜」域名;-)無論如何,您希望在每個項目中訪問各個應用程序的預期開始 - 它是'backend.domain.com/project'還是更像'domain.com/project/ backend.php'?這會對你如何去做這件事產生影響。 – prodigitalson 2010-01-27 16:27:58

+0

這個想法是通過domain.com/project/backend/訪問後端應用程序 – eillarra 2010-01-27 18:09:14

回答

0

您可以使用您的ProjectConfiguration方法setWebDir指定唯一的web目錄服完的每一個項目。這將允許您在通常在web /中將文件移動到完全不同的位置(/ home/projectone)中的任何目錄(/ home/projectone)中的項目文件(應用程序,配置,lib,插件等) MYDOMAIN /網絡/ projectone)。你必須從你的根ProjectConfiguration調整整個項目的web目錄的選項config/ProjectConfiguration.class.php

class ProjectConfiguration extends sfProjectConfiguration 
{ 
    public function setup() 
    { 
    $this->setWebDir('/home/mydomain/web/projectone'); 
    } 
} 

,或者如果您想您的每一個應用程序有不同的web目錄(/ projectone /爲前端和/ projectone /後端/針對後端),您可以設置每個應用程序配置的web目錄中apps/myapp/config/myappConfiguration.class.php

class myappConfiguration extends sfApplicationConfiguration 
{ 
    public function configure() 
    { 
    $this->setWebDir('/home/mydomain/web/projectone'); 
    } 
} 

希望有所幫助。

1

我試過這個代碼,似乎工作。由於我沒有測試過,所以我不確定這是沒有錯誤的,但它可能是一個暗示。

<VirtualHost 127.0.0.1:8088> 
    Alias /badger /home/amqs/proyectos/sales/nuevo/salesprime/web 
    DocumentRoot "/home/amqs/proyectos/sales/nuevo/salesprime/web" 
    DirectoryIndex frontend_dev.php 
    <Directory "/home/amqs/proyectos/sales/nuevo/salesprime/web"> 
    AllowOverride All 
    Allow from All 
    </Directory> 

    Alias /sales /home/amqs/proyectos/sales/salesprime2/web 
    DocumentRoot "/home/amqs/proyectos/sales/salesprime2/web" 
    DirectoryIndex frontend_dev.php 
    <Directory "/home/amqs/proyectos/sales/salesprime2/web"> 
    AllowOverride All 
    Allow from All 
    </Directory> 

</VirtualHost> 
2

我一直這樣做。這裏是相關的Apache配置。我還爲每個symfony應用程序設置了custom error handlers

# make sure your symfony install dir is available 
<Directory "/var/www/symfony1.4"> 
    AllowOverride All 
    Allow from all 
</Directory> 

# each app under http://mysite/myapp gets a section like this 
Alias /myapp/sf "/var/www/symfony1.4/data/web/sf" 
Alias /myapp "/var/www/vhosts/myvhost/sf_apps/myapp/web" 
<Directory "/var/www/vhosts/myvhost/sf_apps/myapp/web"> 
    AllowOverride All 
    Allow from all 
    ErrorDocument 404 /myapp/default/error404 
    ErrorDocument 500 /myapp/myThemePlugin/errors/error500.php 
</Directory> 

您還需要在web/.htaccess文件中破解此行。

# uncomment the following line, if you are having trouble 
# getting no_script_name to work 
RewriteBase /myapp 
相關問題