Heroku问题:您正在寻找的页面不存在

我按照书直到第5章完成,当我推送到Heroku时,它在我的linux工作站上工作正常,所有数据都正确推送但是当我尝试打开Heroku时(http://vivid-sky-685.heroku.com)

我收到了404消息。

您要查找的页面不存在。 您可能输错了地址或页面可能已移动。

下面是我的应用程序Gemfile

 source 'http://rubygems.org' gem 'rails', '3.0.5' gem 'sqlite3' group :development do gem 'rspec-rails', '2.5.0' end group :test do gem 'rspec', '2.5.0' gem 'webrat', '0.7.1' gem 'spork', '0.9.0.rc4' end gem 'rake','~> 0.8.7' 

什么想法可能会出错?

@odin这是我的heroku日志,谢谢

 2011-09-11T10:41:57+00:00 heroku[router]: GET vivid-sky-685.heroku.com/y dyno=web.1 queue=0 wait=0ms service=5ms status=404 bytes=728 2011-09-11T10:41:57+00:00 app[web.1]: 2011-09-11T10:41:57+00:00 app[web.1]: 2011-09-11T10:41:57+00:00 app[web.1]: Started GET "/y" for 93.186.31.80 at 2011-09-11 03:41:57 -0700 2011-09-11T10:41:57+00:00 app[web.1]: 2011-09-11T10:41:57+00:00 app[web.1]: ActionController::RoutingError (No route matches "/y"): 2011-09-11T10:41:57+00:00 app[web.1]: 2011-09-11T10:41:57+00:00 app[web.1]: 2011-09-11T10:41:57+00:00 app[web.1]: 2011-09-11T10:41:57+00:00 heroku[nginx]: 93.186.31.80 - - [11/Sep/2011:03:41:57 -0700] "GET /y HTTP/1.1" 404 728 "-" "Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+" vivid-sky-685.heroku.com 2011-09-11T11:45:28+00:00 heroku[web.1]: Idl 2011-09-11T11:45:29+00:00 heroku[web.1]: State changed from up to down 2011-09-11T11:45:29+00:00 heroku[web.1]: State changed from down to created 2011-09-11T11:45:29+00:00 heroku[web.1]: State changed from created to starting 2011-09-11T11:45:30+00:00 heroku[web.1]: Stopping process with SIGTERM 2011-09-11T11:45:30+00:00 app[web.1]: >> Stopping ... 2011-09-11T11:45:30+00:00 heroku[web.1]: Process exited 2011-09-11T11:45:30+00:00 heroku[web.1]: Starting process with command `thin -p 16738 -e production -R /home/heroku_rack/heroku.ru start` 2011-09-11T11:45:33+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious) 2011-09-11T11:45:33+00:00 app[web.1]: >> Maximum connections set to 1024 2011-09-11T11:45:33+00:00 app[web.1]: >> Listening on 0.0.0.0:16738, CTRL+C to stop 2011-09-11T11:45:33+00:00 heroku[web.1]: State changed from starting to up 2011-09-11T12:53:00+00:00 heroku[web.1]: Idling 2011-09-11T12:53:01+00:00 heroku[web.1]: State changed from up to down 2011-09-11T12:53:02+00:00 heroku[web.1]: Stopping process with SIGTERM 2011-09-11T12:53:02+00:00 app[web.1]: >> Stopping ... 2011-09-11T12:53:02+00:00 heroku[web.1]: Process exited 2011-09-11T13:18:21+00:00 heroku[rake.1]: State changed from created to starting 2011-09-11T13:18:23+00:00 app[rake.1]: Awaiting client 2011-09-11T13:18:23+00:00 app[rake.1]: Starting process with command `bundle exec rake db:migrate` 2011-09-11T13:18:26+00:00 heroku[rake.1]: Process exited 2011-09-11T13:18:26+00:00 heroku[rake.1]: State changed from up to complete 2011-09-11T13:20:02+00:00 heroku[web.1]: Unidling 2011-09-11T13:20:02+00:00 heroku[web.1]: State changed from down to created 2011-09-11T13:20:02+00:00 heroku[web.1]: State changed from created to starting 2011-09-11T13:20:04+00:00 heroku[web.1]: Starting process with command `thin -p 48393 -e production -R /home/heroku_rack/heroku.ru start` 2011-09-11T13:20:06+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious) 2011-09-11T13:20:06+00:00 app[web.1]: >> Maximum connections set to 1024 2011-09-11T13:20:06+00:00 app[web.1]: >> Listening on 0.0.0.0:48393, CTRL+C to stop 2011-09-11T13:20:07+00:00 heroku[web.1]: State changed from starting to up 2011-09-11T13:20:07+00:00 app[web.1]: 2011-09-11T13:20:07+00:00 app[web.1]: 2011-09-11T13:20:07+00:00 app[web.1]: Started GET "/" for 118.137.144.220 at 2011-09-11 06:20:07 -0700 2011-09-11T13:20:08+00:00 app[web.1]: 2011-09-11T13:20:08+00:00 app[web.1]: ActionController::RoutingError (uninitialized constant PagesController): 2011-09-11T13:20:08+00:00 app[web.1]: 2011-09-11T13:20:08+00:00 app[web.1]: 2011-09-11T13:20:08+00:00 app[web.1]: 2011-09-11T13:20:08+00:00 heroku[router]: GET vivid-sky-685.heroku.com/ dyno=web.1 queue=0 wait=0ms service=403ms status=404 bytes=728 2011-09-11T13:20:08+00:00 heroku[nginx]: 118.137.144.220 - - [11/Sep/2011:06:20:08 -0700] "GET / HTTP/1.1" 404 728 "-" "Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0" vivid-sky-685.heroku.com 

我遇到了同样的问题; 但是,更改了生产的1行代码后,位于config/environments/production.rb中的config/environments/production.rb

 config.assets.compile = false 

 config.assets.compile = true 

提交新的变化。 然后我的示例应用程序在heroku上正常工作

我知道这是一个老问题,但我也碰到了它。 我意识到在config/routes.rb之前我没有在config/routes.rb更改根路由。 不更改它可能会导致本地欢迎页面,但在heroku上它将得到上述错误。

我正在使用postgresql,而且我的页面也没有显示在heroku上。

这个命令修复了它:

 heroku run rake db:setup 

然后

 heroku rake db:migrate 

我以前曾迁移过,但没有先完成设置。

我也尝试过设置

 config.assets.compile = true 

在production.rb中,但没有任何区别。

您是否尝试过在本地生产模式下运行? 尝试使用rails server -e production并查看是否收到相同的错误,然后可以调试。 还要确保你已经完成了heroku rake db:migrate

在我的情况下,它是一个缺少的起始页面,在开发模式下没有引起问题,但确实在heroku上引起了上述问题。 在这个主题上接受的答案更加清晰。

也遇到了这个问题。 通过设置根路由解决它。 在我的例子中,在config / routes.rb中root 'pages#home'

如果未设置根路由,则会重定向到localhost:3000。 因此,

您要查找的页面不存在。 您可能输错了地址或页面可能已移动。

1.始终在路径中设置根。 这是轨道101

我不会一直把资产预编译弄错。 对于生产应用程序,我觉得如果资产已预先编译,它可以提高整体速度。

2.根据经验,我总是运行rake assets:precompile在推送到git之前rake assets:precompile 请试一试。 然后提交到git仓库,然后是heroku。 heroku restart

3.另一个原因可能是heroku rake db:migrate,请检查你是否这样做了

这也是我的开发和生产组的Gemfile设置

 group :development do gem 'sqlite3' end group :production do gem 'pg' gem 'rails_12factor' gem 'heroku-deflater' end 

我和heroku有一个非常相似的问题,从这个问题中找到答案:

主页的RefineryCMS路由不起作用

为了节省您的阅读,解决方案是使用高级选项更新“主页”,有一个问题:

“将此页面转发到其他网站或页面”

/填充它,它应该工作。 这听起来有点倒退,因为它实际设置/ my_page重定向到“/”。 但想到它的方法是:

Refinery页面扩展正在寻找一个页面,其中url’/’是主页。 因此,通过告诉标题为“Home”的页面,您希望它具有url’/’,就Refinery页面扩展而言,您将其设置为权威主页。 (引自@Philip Arndt)

所以我必须按照这个顺序运行它对我有用

 $ heroku rake db:migrate $ heroku run rake db:setup 

在应用程序中指定Ruby版本Rails 5需要Ruby 2.2.0或更高版本。 Heroku默认安装了最新版本的Ruby,但您可以在Gemfile中使用ruby DSL指定确切版本。

在Gemfile的末尾添加:

ruby“2.4.1”

我遇到了同样的问题,但问题是应用程序像root一样错过了家。 Heroku的默认主页是此HTML 的默认页面 。 但如果您尝试所有已定义的路线,它们的工作方式如下:

appname.herokuapp.com/route

我得到了同样的错误,但意识到我没有在config / routes.rb文件中将HTML动词从GET更改为ROOT。

get "/hello", to: "application#hello"

我把它更新为root "application#hello"

然后我把它推到git并将其部署到生产中。