我正试图找到解决问题的方法,但没有找到任何解决方案。我会尽力解释的。
我正在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