【问题标题】:Laravel - Routing IssueLaravel - 路由问题
【发布时间】:2014-08-14 17:41:17
【问题描述】:

这很可能完全是菜鸟,我错过了一些简单的东西,但它整天让我发疯,而且 IRC 也不是很有帮助:c

使用 Laravel PHP 框架和路由失败。

环境

  • 主机 Ubuntu 14.04
  • Guest Machine Laravel - Homestead Vanilla(Standard) Vagrant Box

项目

默认未编辑的 Composer Laravel 项目

行为

导航到 /public 你会得到 laravel 项目的 hello 页面(建议友好的 url 和路由工作正常)。当您导航到 /account 时,您会看到“未指定输入文件。”

守则

                             -- app/routes.php --


    Route::get('/', function()
{
    return View::make('hello');
});

Route::get('/account', function()
{
    return View::make('account');
});

请注意,Account.PHP 是在视图文件夹中创建的

Nginx 错误日志

2014/06/24 06:56:49 [error] 1307#0: *97 FastCGI sent in stderr: "Unable to open primary script: /home/vagrant/Code/profile_system/index.php (No such file or directory)" while reading response header from upstream, client: 192.168.10.1, server: profile-system.app, request: "GET /accounts/create HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "profile-system.app"

所以显然问题是它无法在项目的 / 中找到 index.php。但是 laravel 在 / 中没有 index.php。

有什么想法吗?有关完整的环境信息,请参阅此链接。很高兴根据要求添加任何其他内容。 https://gist.github.com/Jonjoe/6359e71e47b7a489109c

【问题讨论】:

    标签: php laravel nginx


    【解决方案1】:

    发布答案是因为如果你不知道它会毁了你。

    Laraval 应用程序在 /public 之后启动。确保您的主机文件/Web 服务器指定路径为 /root/to/project/laravel-root/public。然后它就可以工作了:p。

    我会将 Linek 的答案标记为正确,因为如果它是一个友好的 url 问题是正确的解决方案。

    【讨论】:

      【解决方案2】:

      如果您导航到 /public 以查看 Laravel 的欢迎页面,那么您的服务器配置不正确。您应该能够在 URL 中没有 /public 的情况下获得欢迎页面。

      可能最简单的方法是使用 .htaccess 文件(直接放在 Laravel 目录中)的内容:

      <IfModule mod_rewrite.c>
          RewriteEngine on
          RewriteCond %{REQUEST_URI} !^public
          RewriteRule ^(.*)$ public/$1 [L]
      </IfModule>
      

      虽然这不是最好的解决方案。你应该威胁你的 public 目录作为网站根目录而不是 Laravel 目录。你可以阅读更多here

      【讨论】:

      • 嗯,问题是我正在运行专为 laravel 设计的宅基地流浪盒。这应该是开箱即用的.. 刚刚尝试了 .htaccess 更新,我得到了相同的结果。我可能只是滚动我自己的流浪者而不是使用这个预制。我感谢你的帮助!
      • @Jonjoe 您可能想阅读以下内容:http://culttt.com/2013/06/17/setting-up-vagrant-with-laravel-4/ 有一个“设置 Apache”部分告诉您将 VirtualHost 设置为 public 目录。
      • @Jonjoe 您将此标记为“已接受”,但也提到 .htaccess 更改仍然给您同样的错误。我也遇到了这个问题,不知道你是怎么解决的?
      猜你喜欢
      • 2018-11-20
      • 1970-01-01
      • 2012-08-16
      • 2018-12-15
      • 2019-09-11
      • 2016-03-31
      相关资源
      最近更新 更多