在带有虚拟主机的Symfony2中,被迫在开发模式下执行资产转储


Forced to execute assetic dump on development mode in Symfony2 with virtual hosts

我正试图找到解决问题的方法,但没有找到任何解决方案。我会尽力解释的。

我正在MAMP服务器上的本地环境中开发我的网站。主URL为http://localhost:8888/mysite/web/app_dev.php。我想在开发模式中将其更改为http://site.dev(稍后,我将在生产模式中使用http://site.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

显然,我激活了我的apache httpd.conf文件中的vhost:

# 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,我又刷新了一次,奇迹般的是,一切都正常。

因此,我的问题是:如何在不需要执行assetic:dump控制台功能的情况下使用我的http://site.dev虚拟主机。

谢谢

编辑:我没有找到解决我的问题的方法,所以,我会给你更多的细节:-当我进入http://localhost/site/时,我会看到根目录的所有目录和文件。-当我进入http://localhost/site/web/时,所有的网站都会显示出来,但有丢失的图像(树枝中的坏路径或更少的文件),我必须执行assetic:dump。-当我打开http://localhost/site/web/app_dev.php时,一切都会立即刷新。。。

php app/console assets:install web --symlink

这将符号链接您的资产,因此您不需要每次都重新运行asset命令。

此外,请查看http://symfony.com/blog/new-in-symfony-2-6-smarter-assets-install-command