Вынужден выполнять сборочный дамп в режиме разработки в Symfony2 с виртуальными хостами

1

Я пытаюсь найти способ решить мою проблему, но я не нашел никакого решения. Я постараюсь объяснить, что могу.

Я разрабатываю свой сайт в локальной среде на сервере MAMP. Домашний URL-адрес: http://localhost:8888/mysite/web/app_dev.php. Я хотел изменить его на http://site.dev для режима dev (позже я буду использовать http://site.prod для режима prod). Некоторые из вас спросят меня "почему?". Ответ заключается в том, что мы хотим, чтобы у других разработчиков и у меня был такой же URL-адрес, что и в моем производстве, например http://example.com

Итак, я посмотрел на сторону виртуальных хостов Apache и файл хоста на моем компьютере. Я изменил порт Apache на 80, а порт MySQL - на 3306 (по умолчанию Nginx - 80).

Вот файл httpd-vhosts.conf:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /Applications/MAMP/htdocs
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    ServerName site.dev
    ServerAlias www.site.dev

    DocumentRoot /Applications/MAMP/htdocs/site/web
    <Directory /Applications/MAMP/htdocs/site/web>
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

Файл hosts:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost

127.0.0.1       site.dev

Очевидно, я активирую vhosts в файле apache httpd.conf:

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Вот мой новый файл web/.htaccess:

DirectoryIndex app_dev.php

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app_dev\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/app_dev.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /app_dev.php/
    </IfModule>
</IfModule>

Теперь, я продолжаю http://site.dev, все работает отлично. Я делаю изменения в файле script.js (например), затем обновляю домашнюю страницу. Ничего не изменилось... Я пытаюсь выполнить php app/console assetic:dump, я php app/console assetic:dump еще раз, и, чудо, все работает.

Итак, мой вопрос следующий: как я могу использовать свой виртуальный хост http://site.dev БЕЗ необходимости выполнения функции assetic:dump console.

спасибо

EDIT: я не нашел решения для своей проблемы, поэтому дам вам более подробную информацию: - Когда я перехожу на http://localhost/site/, я вижу все каталоги и файлы корневого каталога. - Когда я перехожу на http://localhost/site/web/, отображается весь веб-сайт, но есть недостающие изображения (неправильный путь в ветке или меньше файлов), и я должен выполнить assetic:dump. - Когда я перехожу на http://localhost/site/web/app_dev.php, все обновляется мгновенно...

Теги:
.htaccess
virtualhost

1 ответ

0
php app/console assets:install web --symlink

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

Кроме того, ознакомьтесь с http://symfony.com/blog/new-in-symfony-2-6-smarter-assets-install-command

  • 0
    Уже сделано миллион раз, очевидно .. Спасибо за редактирование, я посмотрю
  • 0
    так вы говорите, символические ссылки не работают в вашей системе? РЕДАКТИРОВАТЬ: где находятся ваши активы?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню