Я работаю над веб-сайтом в среде разработки, созданным поверх платформы 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>