Homestead:文件夹映射到错误的文档根目录


Homestead: Folder mapping to the wrong document root

我正在使用Laravel Homestead来虚拟机进入我的开发环境。我最近在Homestead.yaml中创建了一个新的映射(/Website/Site/目录)。每当我转到site.app页面时,我都会重定向到另一个项目(/Laravel)中设置的/tasks页面。(这会导致一个错误,因为页面不在那里)。这是我的Homestead.yaml文件:

folders:
   - map: /Users/me/Homestead/Code/Laravel
     to: /home/vagrant/Code/Laravel
   - map: /Users/me/Homestead/Code/Larabook
     to: /home/vagrant/Code/Larabook
   - map: /Users/me/Homestead/Code/Website/Site
     to: /home/vagrant/Code/Website
sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
    - map: larabook.app
      to: /home/vagrant/Code/Larabook/public
    - map: site.app
      to: /home/vagrant/Code/Website/public
variables:
   - key: APP_ENV
     value: local

Laravel包含重定向索引页面的路径,网站目录是一个新项目,它只是Laravel的新安装,没有其他内容。以下是一些服务器/请求数据错误输出:

SCRIPT_FILENAME /home/vagrant/Code/Laravel/public/index.php
SCRIPT_NAME     /index.php
REQUEST_URI     /tasks
DOCUMENT_URI    /index.php
DOCUMENT_ROOT   /home/vagrant/Code/Laravel/public

以下是Laravel/(即旧项目)中项目的route.php

 Route::get('/', function(){
    return Redirect::to('tasks');
 });

为什么Laravel的新安装会被另一个目录中的项目重定向?

解决方案

  1. vagrant reload --provision

或者,更剧烈的

  1. ~/Homestead运行vagrant destroy,然后运行vagrant up

我也遇到了这个问题。

据推测,Homestead.yaml文件中的更改被忽略了。所以,我决定刷新它。

!修订后的解决方案不会损坏您的机器

我下面的解决方案不足,因为它会破坏您现有的机器。请先查看此解决方案

一旦您的Homestead环境被配置并运行,您可能需要为您的Laravel应用程序添加额外的Nginx站点。您可以在一个Homestead环境中运行任意数量的Laravel安装。有两种方法可以做到这一点:首先,你可以简单地将网站添加到你的Homestead.yaml文件中,然后运行流浪者服务。

或者,您可以使用Homestead环境中提供的服务脚本。要使用serve脚本,请将SSH连接到Homestead环境中,并运行以下命令。。。

http://laravel.com/docs/homestead#daily-使用

根据Laravel.io论坛的说法,更好的解决方案是运行vagrant reload --provision

另请参见

*Vagrant Docs

旧解决方案:用作最后的度假胜地

尝试以下解决方案:

  1. ~/Homestead运行vagrant reload,然后运行vagrant up

或者,更剧烈的

  1. ~/Homestead运行vagrant destroy,然后运行vagrant up

选项2破坏服务器及其数据库

注:我采用了第2步。

您可以运行homestead up --provision来强制重新加载Homestead.yaml文件。

如果您有一个正在运行的home实例,只需从本地机器发出命令homestead provision即可。

我可以使用homebox附带的serve命令来解决这个问题。当你连接到虚拟机时运行:

serve personal.local /home/vagrant/projects/personal/personal-site/public

而不需要重新启动VM。我尝试过vagrant reload --provision,它重新加载了yaml文件,但似乎不是ngnix配置。