Развертывание веб-сайта Symfony 2.5.3 на рабочий сервер

Я работаю над веб-сайтом в среде разработки, созданным поверх платформы Symfony, и теперь пришло время развернуть его на сайт в реальном времени, в среде разработки мы запускаем команду php app/console server:run для запуска веб-сайта, но я не что нужно сделать, чтобы пользователь увидел содержимое веб-сайта на реальном сервере, после того, как я загрузил код на живой сервер, все, что я вижу, это структура корневой директории Symfony, я прошел через Как развернуть приложение Symfony, и я почесываю свой потому что для этого нужно больше, потому что после выполнения шагов никаких различий не было, и я все еще вижу структуру каталогов.

Я заметил, что когда я нажимаю на веб-папку, я вижу веб-сайт, поэтому я создал следующий .htaccess файл, который работает, но URL-адрес выглядит как www.domain.com/web как я могу просто сделать это www.domain.com

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ web/$1 [QSA,L] </IfModule> 

Я буду очень благодарен, если я смогу получить помощь здесь, если это поможет, я пытаюсь развернуть на сервере на базе Linux с помощью Apache.

РЕШЕНИЕ Добавьте следующее в свой файл .htaccess и он будет работать, так как это то, что решило мою проблему, и, пожалуйста, не забудьте также очистить кеш браузера

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteCond %{REQUEST_URI} !web/ RewriteRule (.*) /web/$1 [L] </IfModule> 

Если вы используете ubuntu, выполните следующие действия:

  sudo nano /etc/apache2/sites-enabled/000-default.conf 

изменить корень документа и сохранить

  DocumentRoot /var/www/html/web 

Затем запустите

  sudo service apache2 restart 

Затем запустите

  cd /var/www/html php app/console cache:clear --env=prod --no-debug 

все сделано

Я не знаю, как это делается профессионально, потому что я не использую symfony, но я расскажу вам, как я это сделал, когда тестировал Linux.

Допустим, у вас есть ваш каталог www в /home/user/www/ (это не имеет особого значения). Я бы поставил целую директорию symfony (со всей структурой каталогов) в какой-либо другой каталог (скажем, /home/user/applications/my-symfony-webpage последний из которых является вашим каталогом с структурой файлов symfony).

Последнее, что вам нужно сделать, чтобы заставить его работать, – создать символическую ссылку, которая будет направляться из /home/user/www/ to /home/user/applications/my-symfony-webpage/web .

Это может быть сделано с помощью этой команды: ln -s /home/user/applications/my-symfony-webpage/web /home/user/www/ (я думаю, вам нужно сначала удалить каталог www, если это предназначено только для установки symfony) ,

Это мое решение, я сомневаюсь, что он единственный и, вероятно, не самый лучший. Я думаю, вы можете создавать перенаправления с помощью apache, чтобы направить некоторые домены в какой-либо каталог в вашей файловой структуре (в вашем случае в web каталог, конечно). Вы можете посмотреть его онлайн.

Вы должны настроить Apache, чтобы указать web папку проекта в качестве корня документа.

Вы можете найти информацию о настройке своего сервера здесь: Настройка веб-сервера (Symfony CookBook)

После того как вы выполните все инструкции по развертыванию приложения Symfony , в корне вашего приложения Symfony создайте файл .htaccess и добавьте в него следующий код, вот что решило мою проблему.

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteCond %{REQUEST_URI} !web/ RewriteRule (.*) /web/$1 [L] </IfModule>