laravel 5 heroku 404未找到ngix

时间:2015-06-04 06:20:40

标签: php laravel heroku deployment

我在尝试将Laravel 5应用程序部署到Heroku时遇到了一个非常奇怪的错误。如果我尝试访问我的根域https://my-app.herokuapp.com,它可以正常工作。但是,如果我尝试访问/某个名为https://my-app.herokuapp.com/api/v1/users的域名,则会向我提供未找到的404。 Heroku实际上是试图转到文件夹/ api / v1 / users而不是读取路径文件。

这是我的Procfile:

web: vendor/bin/heroku-php-nginx public/

现在,如果我尝试相同的东西,但使用apache服务器,它工作正常:

web: vendor/bin/heroku-php-apache2 public/

3 个答案:

答案 0 :(得分:6)

https://devcenter.heroku.com/articles/custom-php-settings

使用自定义应用程序级别Nginx配置

在Heroku在Nginx启动期间使用的默认服务器级配置文件中,它包含一个非常简单的默认应用程序级配置文件。您可以使用自定义配置替换此文件。例如,要将Nginx配置为对Symfony2应用程序使用一些重写规则,您需要在应用程序的根目录中创建一个nginx_app.conf,其中包含以下内容:

location / {
    # try to serve file directly, fallback to rewrite
    try_files $uri @rewriteapp;
}

location @rewriteapp {
    # rewrite all to app.php
    rewrite ^(.*)$ /app.php/$1 last;
}

location ~ ^/(app|app_dev|config)\.php(/|$) {
    try_files @heroku-fcgi @heroku-fcgi;
    internal;
}

for laravel。

在根目录下创建nginx_app.conf:

location / {
    # try to serve file directly, fallback to rewrite
    try_files $uri @rewriteapp;
}

location @rewriteapp {
    # rewrite all to app.php
    rewrite ^(.*)$ /index.php/$1 last;
}

location ~ ^/(app|app_dev|config)\.php(/|$) {
    try_files @heroku-fcgi @heroku-fcgi;
    internal;
}

在Procfile中:

web: vendor/bin/heroku-php-nginx -C nginx_app.conf /public

答案 1 :(得分:0)

http://laravel.com/docs/4.2/installation#pretty-urls

上找到解决方案

我有同样的问题。基本上,我刚刚在/ public文件夹中添加了.htaccess文件,现在一切正常。

答案 2 :(得分:0)

如果您想将nginx与heroku一起使用,您需要在公共文件夹中添加nginx_app.conf,然后添加:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

这就是你的Procfile看起来的样子:

web: vendor/bin/heroku-php-nginx public/