如何配置Apache在同一个域中有两个symfony项目(不使用子域)?

时间:2010-01-27 15:36:49

标签: apache symfony1 virtualhost

我正在尝试将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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 :(得分:0)

您可以使用ProjectConfiguration中的setWebDir方法指定要在每个项目中提供的唯一Web目录。这将允许您在任何目录(/ home / projectone)中托管项目文件(应用程序,配置,库,插件等),同时将文件正常移动到完全不同的位置(/ home / MYDOMAIN /网络/ projectone)。您可以选择从config/ProjectConfiguration.class.php中的根ProjectConfiguration调整整个项目的Web目录:

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

或者如果您希望每个应用程序都有一个不同的Web目录(/ projectone /用于前端和/ projectone / backend /用于后端),您可以设置每个应用程序的Web目录apps/myapp/config/myappConfiguration.class.php中的应用程序配置:

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

希望有所帮助。

答案 3 :(得分:0)

  

尝试此配置。
  适用于 symfony 2和3。

<VirtualHost 127.0.0.1:8080>
    Alias /app1 /var/www/public_html/app1/web 
    DocumentRoot "/var/www/public_html/app1/web" 
    DirectoryIndex app.php
    <Directory "/var/www/public_html/app1/web"> 
        AllowOverride All
        Allow from All 
    </Directory>
</VirtualHost>

文档:https://symfony.com/doc/3.3/setup/web_server_configuration.html