Как развернуть 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 [] []
Что я делаю неправильно?
Ответы
Ответ 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]
это правило, которое я использовал в моем проекте.
Возможно, вам придется предоставить полный путь к вашим активам, иначе они не будут загружены.