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