博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A small trick to avoid 404 error when redmine runs on dreamhost
阅读量:5843 次
发布时间:2019-06-18

本文共 7104 字,大约阅读时间需要 23 分钟。

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]
ActionController::RoutingError (No route matches 
"
/internal_error.html
"
 with {:method
=>
:get}):
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
rack
/
request_handler.rb:
92
:
in
 `process_request
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_request_handler.rb:
207
:
in
 `main_loop
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
railz
/
application_spawner.rb:
400
:
in
 `start_request_handler
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
railz
/
application_spawner.rb:
351
:
in
 `handle_spawn_application
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
utils.rb:
184
:
in
 `safe_fork
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
railz
/
application_spawner.rb:
349
:
in
 `handle_spawn_application
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server.rb:
352
:
in
 `
__send__
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server.rb:
352
:
in
 `main_loop
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server.rb:
196
:
in
 `start_synchronously
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server.rb:
163
:
in
 `start
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
railz
/
application_spawner.rb:
209
:
in
 `start
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
spawn_manager.rb:
262
:
in
 `spawn_rails_application
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server_collection.rb:
126
:
in
 `lookup_or_add
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
spawn_manager.rb:
256
:
in
 `spawn_rails_application
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server_collection.rb:
80
:
in
 `synchronize
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server_collection.rb:
79
:
in
 `synchronize
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
spawn_manager.rb:
255
:
in
 `spawn_rails_application
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
spawn_manager.rb:
154
:
in
 `spawn_application
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
spawn_manager.rb:
287
:
in
 `handle_spawn_application
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server.rb:
352
:
in
 `
__send__
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server.rb:
352
:
in
 `main_loop
'
  
/
dh
/
passenger
/
lib
/
phusion_passenger
/
abstract_server.rb:
196
:
in
 `start_synchronously
'
Rendering 
/
home
/
walzer
/
project.cocos2d
-
x.com
/
public
/
404
.html (
404
 Not Found)
Processing IssuesController
#
show (for 999.999.999.99 at 2011-07-09 08:38:49) [GET]
  Parameters: {
"
action
"
=>
"
show
"
"
id
"
=>
"
62
"
"
controller
"
=>
"
issues
"
}
Rendering template within layouts
/
base
Rendering issues
/
show.rhtml
Completed 
in
 831ms (View: 
312
, DB: 
484
|
 
200
 OK [http:
//
project.cocos2d
-
x.com
/
issues
/
62
]

 

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]
  Parameters: {
"
board_id
"
=>
"
11
"
"
action
"
=>
"
show
"
"
id
"
=>
"
2290
"
"
controller
"
=>
"
messages
"
}
Rendering template within layouts
/
base
Rendering messages
/
show
Completed 
in
 106ms (View: 
72
, DB: 
20
|
 
200
 OK [http:
//
www.cocos2d
-
x.org
/
boards
/
11
/
topics
/
2290
]

 

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 :)

本文转自Walzer博客园博客,原文链接:http://www.cnblogs.com/walzer/archive/2011/07/10/2102435.html,如需转载请自行联系原作者

你可能感兴趣的文章
第零讲.1 tapestry项目创建与运行
查看>>
微服务框架开发(二)—扩展spring schema
查看>>
(转)直接拿来用!最火的iOS开源项目(一)
查看>>
java8新特性stream深入解析
查看>>
Linux manjaro系统安装后无法连接wifi,解决方案
查看>>
关于我的知识星球服务
查看>>
前端每隔几秒发送一个请求
查看>>
div+css+js 树形菜单
查看>>
javax.jdo.option.ConnectionURL配置的问题
查看>>
ubuntu 开启 apache mod_rewrite
查看>>
android EventBus 3.0 混淆配置
查看>>
数据库备份需要注意的
查看>>
判断点在多边形内
查看>>
程序报错与提示
查看>>
EXT.NET 更改lable和Text的颜色
查看>>
我的友情链接
查看>>
把文件放在SD卡
查看>>
postfix搭建及配置
查看>>
DNS区域委派与转发
查看>>
[deviceone开发]-一个很炫的手势动画示例
查看>>