2012-04-20 3 views
4

Я работаю над этим довольно долго, безрезультатно. У меня есть symfony, установленный на общем веб-хосте, где у меня есть нулевой доступ, чтобы изменить DocumentRoot на веб-папку, так что что это не вариант для меня ...symfony2 на общедоступном хостинге

Я написал мой Htaccess

RewriteEngine On 
RewriteBase/
RewriteRule ^$ web/app.php [QSA] 
RewriteRule ^(.*)$ web/app.php/$1 [QSA, L] 

Я также попытался это с RewriteBase web/ и RewriteBase /web/ безрезультатно.

С этим, symfony работает. Я могу войти в систему, я могу сделать все это ... Только проблема в том, что ни одно из активов не отображается ... Chrome Developer Tools, говорит мне, что он находит 404, который правильно, потому что он не читает папку/web/в качестве DocumentRoot.

Итак, как исправить эту проблему без перезаписывания файлов или что-то еще. Должен быть способ сделать это только с .htaccess ...

+0

вы должны использовать оригинальный htaccess с symfony и просто переписать базу. потому что с этим htaccess все запросы, направленные на статические активы, обрабатываются с помощью правила перезаписи. где ваши условия перезаписи? – mpm

ответ

13

Один из способов будет установка assets_base_urls в app/config.yml например

framework: 
    #.. 
    templating:  
     engines: ['twig'] 
     assets_base_urls: http://your.site.com/web/ 
+0

Хорошо, что работает .. Но вот вопрос для вас сейчас. Скажем, у меня есть 2 домена, нацеленные на одну и ту же установку symfony - тот же сайт, что и все .. только разница, одна нацелена на app_dev.php (а documentRoot имеет был установлен в/web/для этого домена), но я хочу, чтобы активы отображали только:/web/в них для другого домена, а не http://your.site.com/web/, как бы я это сделал? просто устанавливая assets_base_urls как web/разбивая его на любые, которые были установлены на уровне httpd (попробовал это на моем localhost) – Justin

+2

вычислил это ... в моем config.yml я сделал, как вы сказали, кроме i made assets_base_urls: web/then in my config_dev.yml я просто поставлю: templating: assets_base_urls:/ обновил оба экземпляра, и он работает ... красивый;) – Justin

3

Или, вы можете поместить файл .htaccess в папке DocumentRoot и переписать все, что происходит там, чтобы ваш/веб-папки соответственно:

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

С, что вы получите (опуская «Интернет» чистой URL-адреса или «приложение .php "), и нет необходимости использовать материал assets_base_urls в вашей конфигурации.

+0

-1 .. если вы посмотрите, это не имеет никакого отношения к маршрутизации. .Он имеет все, что связано с тем, что активы не отображаются должным образом из-за несоответствия маршрутизации ... htaccess не исправляет это, опция assets_base_urls. Наслаждаться. – Justin

Смежные вопросы