【发布时间】:2016-02-06 03:40:05
【问题描述】:
我正在尝试找到解决问题的方法,但没有找到任何解决方案。我会尽量解释清楚。
我正在本地环境中的 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 文件中激活了虚拟主机:
# 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 时,一切都会立即刷新...
【问题讨论】:
标签: php apache .htaccess symfony virtualhost