Как настроить Apache для двух проектов Symfony в одном домене (без использования поддоменов) - PullRequest
6 голосов
/ 27 января 2010

Я пытаюсь настроить Apache на разные symfony проекты (каждый со своей собственной установкой фреймворка) в одном домене, но я не могу заставить его работать, используя папки. 1003 *

Вот что я хотел бы иметь:

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

2 голосов
/ 02 февраля 2010

Я делаю это все время. Вот соответствующий конфиг 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
1 голос
/ 28 января 2010

Я пробовал этот код и, кажется, работает. Поскольку я не проверял его, я не уверен, что он не содержит ошибок, но это может быть вам подсказкой.

<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>
0 голосов
/ 19 июня 2018

Попробуйте эту конфигурацию.
Эта работа для 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

0 голосов
/ 28 января 2010

Вы можете использовать метод setWebDir в ProjectConfiguration, чтобы указать уникальный веб-каталог, который будет использоваться в каждом проекте. Это позволит вам размещать файлы проекта (приложения, config, lib, плагины и т. Д.) В любом каталоге, который вам нужен (/ home / projectone), в то же время перемещая файлы обычно в Интернете / в совершенно другое место (/ home / MYDOMAIN / веб / projectone). У вас есть возможность настроить весь веб-каталог вашего проекта из корневого ProjectConfiguration в config/ProjectConfiguration.class.php:

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

или если вы хотите, чтобы у каждого из ваших приложений был свой веб-каталог (/ projectone / для внешнего интерфейса и / projectone / backend / для внутреннего интерфейса), вы можете установить веб-каталог из каждого из конфигурации приложения в apps/myapp/config/myappConfiguration.class.php:

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

Надеюсь, это поможет.

...