强制在Symfony2中使用虚拟主机在开发模式下执行资产转储

时间:2015-11-05 10:32:36

标签: php apache .htaccess symfony virtualhost

我试图找到解决问题的方法,但我找不到任何解决方案。我会尽力解释一下。

我在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,我再次刷新,奇迹,一切正常。

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

谢谢

编辑:我没有找到问题的解决方案,所以,我会告诉你更多细节: - 当我继续http://localhost/site/时,我会看到根目录的所有目录和文件。 - 当我继续http://localhost/site/web/时,显示所有网站但是缺少图像(树枝中的路径不好或更少),我必须执行assetic:dump。 - 当我继续http://localhost/site/web/app_dev.php时,一切都会立即刷新......

1 个答案:

答案 0 :(得分:0)

php app/console assets:install web --symlink

这应该符合您的资产符号链接,因此您不必每次都重新运行资产命令。

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