我在尝试将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/
答案 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/