











I locate my redmine webite on dreamhost shared-host. It works well in the first 8 months. But recently I meet 404 Page not found frequently when I post a topic in the forum, or create new issues. This weekend I decide to dig the bug.
The problem looks like this in redmine/log/production.log
Processing IssuesController#create (for 999.999.999.99 at 2011-07-09 08:38:36) [POST]
Parameters: {"commit"=>"创建", "project_id"=>"test", "action"=>"create", "authenticity_token"=>"JOLhksjiN1Wmpt4iAVrw22Y+9+Pvdn1Kr6RwMQ3xDac=", "issue"=>{"start_date"=>"2011-07-09", "estimated_hours"=>"", "priority_id"=>"4", "parent_issue_id"=>"", "assigned_to_id"=>"", "subject"=>"performance test", "tracker_id"=>"1", "due_date"=>"", "status_id"=>"1", "description"=>"12313"}, "controller"=>"issues", "attachments"=>{"1"=>{"description"=>""}}}
Sending email notification to:
Redirected to http://project.cocos2d-x.com/issues/62
Completed in 674ms (DB: 408) | 302 Found [http://project.cocos2d-x.com/projects/test/issues]
Processing ApplicationController
#index (for 125.77.152.242 at 2011-07-09 08:38:37) [GET]Processing IssuesController
#show (for 999.999.999.99 at 2011-07-09 08:38:49) [GET]In the first paragraph, I create an issue. After that the passenger raise an "internal_error", and would like to find public/internal_error.html. Of course this file isn't exist, it's redmine/public/500.html instead. So I get a 404 error, public/404.html is rendered. In the 3rd paragraph, I refresh the page, and get the issue detail page correctly.
I contact the tech support of dreamhost, but the guy refuse to support problems of redmine. damn... I google this problem, many others met it but have no solutions given in their topics, such as
http://discussion.dreamhost.com/thread-130022.html (The tech support of dreamhost is just so so..)
http://groups.google.com/group/phusion-passenger/browse_thread/thread/c04394c2bf8440f6
http://railsforum.com/viewtopic.php?id=36826 (not completely the same)
They're the motion of writing this blog :)
OK, I must DIY now. I know almost nothing about rails, haha. So the breaking point is the 404 page.
1. copy 500.html to internal_error.html to avoid 400 error
After this step, the log looks correctly, but I get a internal_error.html rendered. Actually, I wish it still tell me something more about this error.
Processing MessagesController#new (for 999.999.999.99 at 2011-07-10 01:47:29) [POST]
Parameters: {"board_id"=>"11", "commit"=>"Create", "action"=>"new", "authenticity_token"=>"+KpHpWkhr/4pJQ4tyOgkxtV/CE8tq05r8EM605DLiJE=", "controller"=>"messages", "message"=>{"subject"=>"Another test topic", "content"=>"go away 500! damn!", "sticky"=>"0", "locked"=>"0"}, "attachments"=>{"1"=>{"description"=>""}}}
Sending email notification to: xxxx@cocos2d-x.org, yyyy@tranzda.com, zzz@cocos2d-x.org, aaa@cocos2d-x.org, bbbb@cocos2d-x.org, ccccc@gmail.com
Redirected to http://www.cocos2d-x.org/boards/11/topics/2290
Completed in 2148ms (DB: 38) | 302 Found [http://www.cocos2d-x.org/boards/11/topics/new]
Processing MessagesController
#show (for 999.999.999.99 at 2011-07-10 01:47:34) [GET]I can simply click refresh to get the right page. Why not do it automatically?
2. add this code into the header of redmine/public/internal_error.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<head>
<META HTTP-EQUIV="refresh" CONTENT="0">
</head>
<html>
<title>Redirect</title>
<body>
<h1>I can not wait to refresh...</h1>
<form>
<input type="button" onClick="history.go(0)" value="Refresh">
</form>
</body>
</html>
Oh nice, when the passenger raises 500 error, it will not invoke public/500.html, but call my custom public/internal_error.html, and refresh to the right page immediately.
It's nothing but a small trick. I hope it can help others who meet the same problem :)
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。