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

eil*_*rra 6 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>
Run Code Online (Sandbox Code Playgroud)

有关如何实现文件夹解决方案的任何想法?

在此先感谢,Eneko

nor*_*ron 0

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

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

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

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

希望有帮助。