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

如何将Apache配置为在同一个域中有两个symfony项目(不使用子域)?,apache,symfony1,virtualhost,Apache,Symfony1,Virtualhost,我试图将Apache配置为在同一个域下有不同的symfony项目(每个项目都有自己的框架安装),但我无法使用文件夹使其工作 这就是我想要的: mydomain.com/projectone/ mydomain.com/projecttwo/ 我可以使用子域使其工作,但这不是我的首选解决方案,因为我最终拥有疯狂的子域,如: projectone.mydomain.com backend.projectone.mydomain.com projecttwo.mydomain.com backe

我试图将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>

ServerName projectone.mydomain.com
DocumentRoot“/home/projectone/web”
DirectoryIndex frontend.php
选项-索引包括noexec FollowSymLinks-多视图
不允许超限
通融
重新启动发动机
#我们检查.html版本是否在这里(缓存)
重写规则^$index.html[QSA]
重写规则^([^.]+)$$1.html[QSA]
重写cond%{REQUEST_FILENAME}-F
#不,所以我们重定向到前端web控制器
重写规则^(.*)$frontend.php[QSA,L]
别名/sf/home/projectone/lib/vendor/symfony/data/web/sf
允许超越所有
通融
有没有关于如何实现文件夹解决方案的想法

提前感谢,, Eneko

您可以在项目配置中使用该方法指定一个唯一的web目录,以便在每个项目中提供服务。这将允许您将项目文件(apps、config、lib、plugins等)托管在您想要的任何目录(/home/projectone)中,同时将文件通常在web/中移动到完全不同的位置(/home/mydomain/web/projectone)。您可以选择在
config/ProjectConfiguration.class.php
中从根项目配置调整整个项目的web目录:

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setWebDir('/home/mydomain/web/projectone');
  }
}
class myappConfiguration extends sfApplicationConfiguration
{
  public function configure()
  {
    $this->setWebDir('/home/mydomain/web/projectone');
  }
}
或者,如果您希望每个应用程序都有不同的web目录(/projectone/用于前端,/projectone/后端/用于后端),您可以从
apps/myapp/config/myappConfiguration.class.php中的每个应用程序配置中设置web目录:

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

希望对您有所帮助。

我已经尝试过这段代码,似乎很有效。因为我还没有测试过它,所以我不确定它是否没有错误,但它可以给你一个提示

<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>

别名/badger/home/amqs/proyectos/sales/nuevo/salesprime/web
DocumentRoot“/home/amqs/proyectos/sales/nuevo/saleprime/web”
DirectoryIndex前端_dev.php
允许超越所有
通融
别名/sales/home/amqs/proyectos/sales/salesprime2/web
DocumentRoot“/home/amqs/proyectos/sales/salessprime2/web”
DirectoryIndex前端_dev.php
允许超越所有
通融

我一直都这样做。下面是相关的Apache配置。我还为每个symfony应用程序进行了设置

 # 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>
尝试此配置。
这项工作适用于symfony 2和3


别名/app1/var/www/public_html/app1/web
DocumentRoot“/var/www/public\u html/app1/web”
DirectoryIndex app.php
允许超越所有
通融

文档:

这对我来说很有趣。。。实际上我自己更喜欢“复杂”域名;-)不管怎样,您对访问每个项目中各个应用程序的期望起点是什么?是
backend.domain.com/project
还是更像
domain.com/project/backend.php
?我认为这将改变你的工作方式。我们的想法是通过domain.com/project/backend访问后端应用程序/