6

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

4 回答 4

2

我一直这样做。这是相关的 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>

您还需要破解web/.htaccess文件中的这一行。

# uncomment the following line, if you are having trouble
# getting no_script_name to work
RewriteBase /myapp
于 2010-02-01T23:05:47.327 回答
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>
于 2010-01-28T18:28:38.213 回答
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');
  }
}

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

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

希望有帮助。

于 2010-01-28T01:34:34.673 回答
-1

试试这个配置。
这适用于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

于 2018-06-19T20:11:32.307 回答