Как развернуть Symfony2 на общем хостинге? - программирование
Подтвердить что ты не робот

Как развернуть Symfony2 на общем хостинге?

Я хочу получить доступ к моему приложению symfony в представлении env (http://www.sample.com/amateur1/web/app.php) из этого URL http://www.sample.com/amateur1.

Для этого я переместил файл .htacces в http://www.sample.com/amateur1/.htaccess с этим содержимым:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteBase /web/

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

Но когда я перехожу к http://www.sample.com/amateur1 показывает ошибку 404, а prod.log не записывается.

Я также использовал RewriteBase /amateur1/web/, потому что не знаю, если путь RewriteBase относится к DocumentRoot сервера, или от пути, где находится файл .htaccess. Также попробовали /amateur1 и /amateur1/ как RewriteBase из-за этого ответа Symfony2: как развернуть в подкаталоге (Apache)

С помощью трех попыток страница "Исключения" выглядит неустановленной и не загружает изображение. Но затем я получаю следующую ошибку в файле prod.log:

[2013-02-15 02:06:47] request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /amateur1/" (uncaught exception) at /home/u105859802/public_html/amateur1/app/cache/prod/classes.php line 5121 [] []

Что я делаю неправильно?

4b9b3361

Ответ 1

В вашей конфигурации apache использует public_html в качестве корня документа

Если Symfony2 установлен в каталог /home/u105859802/public_html/amateur1, общедоступный каталог Symfony для обслуживания - /home/u105859802/public_html/amateur1/web/

Вы должны использовать

RewriteBase /amateur1/web/

Но будьте осторожны, это не безопасно
Вы должны защитить свои каталоги symfony! (конфигурация доступна)

Почему вы не пытаетесь переместить свои файлы symfony в свою личную зону?
Вы можете переименовать веб-каталог Symfony в public_html

См. как это сделать в кучной книге документации

Итак, моя структура рекомендаций выглядит следующим образом:

  • /дома/u105859802/
    • поставщика
    • ЦСИ
    • Приложение
    • бен
    • public_html (веб по умолчанию в symfony2) < - единственный общедоступный каталог

Ответ 2

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

Options +FollowSymLinks +ExecCGI

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC]

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