`

ruby/rails redirect_to 404

阅读更多

What’s the 404 error pages and the page role?

 

The 404 error pages’mean

404http协议所定义的一种协议名称,也可说是一种形为,即 服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。从某种意义上来讲,只是一种名称。当然,http协议还规定了其它多种协议名称,最常用500

 

百度百科:404W3C规定的HTTP状态码中的一种错误,是WWW网站访问比较经常出现的错误。最常见的出错提示:404 NOT FOUND404页面就是当用户输入了错误的链接时,返回的页面。404页面的目的是:告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开。

 

The page role

告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开。

 

 

How to make 404

 

First :use the apache server

 

需要准备:

1,自定义的404页面,自己设计,仅能使用后缀名为html的页面

2,找到apache运行的配置文件httpd.conf

3, 修改后需要重启apache服务,因此请提前做好准备

发散思维:

1,可以自定义500的错误信息提示,而不是将异常简单的抛出

2, 将各种错误信息进行客制化,既安全又显得友好。

步骤:

1,将自定义的404页面部署到apache的根目录下(htdocs下面)

     需要通过浏览器确认该页面是否可以正常显示,路径是否正确。

     该处不成功,请不要进下面的步骤。

     验证网页是否可以正常显示:

2,修改httpd.conf配置文件

  #ErrorDocument 404 /404.html 去掉# 该页面默认放置在根目录下面

  可以修改404.html的名称为 xxxx.htmlxxxx为合法的任意名称)

  如果找不到该项,可以在文本中搜索404即可。

  另外一种不推荐的实现形式:ErrorDocument                       

  ErrorDocument 404    (注释2:不推荐的原因)

3,在和系统和网站管理员协调之后重启apache服务。

   正常情况下,重启apache服务可在瞬间完成(五秒钟之内)

不正常时

找一下AllowOverride看看,AllowOverride None改为AllowOverride All

AllowOverride All,建议在网页根目录用.htaccess文件控制
.htaccess
内容如下

ErrorDocument 404 /404.html

 

注意:

1.     切记不要将404错误转向到网站主页,否则可能会导致主页在搜索引擎中消失。如果一个 404 页面的内容小于 512bIE 会认为该 404 页面不够友好,在 IE 下将不会成功返回该 404 错误页面。

2.     切记不要使用绝对URL。例如:http://www.yaiba.net/404.html。正常情况返回的是 404 状态码,而使用URL形式则返回的是 200 状态码。

 

 

 

 

Use rails code

 

使用rails code 方法很多种,有自定义方法加路由控件

http://brian.pontarelli.com/2007/01/14/handling-rails-404-and-500-errors

http://dev.mensfeld.pl/2010/01/handling-custom-404-and-500-errors-in-rails-2/

   大概过程:

l  Edit your app/controllers/application.rb file and add some methods

l  Edit config/routes.rb

l  Edit config/environments/development.rb

 

   最终总结:大都数类似方法都用到ActionController::UnknownAction

           意思为全局捕捉。

           

直接用以下三点:

Edit in application with these code          

rescue_from ActionController::UnknownAction, :with => :render_not_found

def render_not_found

    render :template => "/error_pages/rescue_404.html.erb", :status => 404

    #注意  render :template =>,page大于1024b,否则在IE中会显示IE自己的HTTP 404 page,改成redirect_to 不会出现

end

 

路由:map.connect '*path', :controller => ' error_pages ', :action => ' rescue_404' unless ::ActionController::Base.consider_all_requests_local==false

Or  map.connect '*path', :controller => '
error_pages ', :action => ' rescue_404'
注意路由可以不配制

注:config.action_controller.consider_all_requests_local = true

    表示用户的浏览器上可以看到所有异常错误堆栈。

 

 

  rescue_from Exception, :with => :render_error  

   #500 页面错误
  rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found  

   #rails记录无
  rescue_from ActionController::RoutingError, :with => :render_not_found

   #rails路由出错
  rescue_from ActionController::UnknownController, :with => :render_not_found

    #rails controller出错
  # customize these as much as you want, ie, different for every error or all the same
  rescue_from ActionController::UnknownAction, :with => :render_not_found

   #  rails action出错

分享到:
评论

相关推荐

    ruby on rails对mongodb的操作

    在Rails应用中,我们还可以使用`form_for`和其他Rails助手来处理表单提交,以及`render`和`redirect_to`来管理视图和路由。 最后,`Rails应用中MongoDB+MySQL杂交`的话题意味着在同一个应用中同时使用MongoDB和...

    Ruby on Rails实例开发

    在控制器中,我们会定义动作(actions)来处理HTTP请求,并通过`render`或`redirect_to`方法决定响应内容。视图则包含HTML和erb代码,用以展示数据。 至于论文.docx文件,可能包含了对整个实例开发过程的详细分析、...

    Ruby rails 页面跳转(render和redirect_to)

    Ruby代码 代码如下:if @user.update_attributes(:password => params[:user][:password]) flash[:notice] = ‘密码修改完成’ redirect_to :action => ‘index’ else redirect_to :action => ‘change_pass’, :id ...

    rails上传文件_paperclip

    redirect_to @user, notice: 'User was successfully created.' else render :new end end private def user_params params.require(:user).permit(:name, :email, :avatar) end ``` **Paperclip的高级...

    Ruby on Rails敏捷开发最佳实践源代码

    Rails提供了许多内置辅助方法,如`redirect_to`和`render`,帮助开发者管理请求流程。 4. **路由(Routing)**:Rails的路由系统将URL映射到控制器的特定动作上,确保每个URL都能正确触发相应的处理逻辑。开发者...

    rails 连接mysql的问题解决

    找不到指定的模块。... 您可能感兴趣的文章:Ruby rails 页面跳转(render和redirect_to)Rails link_to 详解rails常用数据库查询操作、方法浅析学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake,

    使用devise+omniauth进行谷歌身份验证_Ruby_JavaScript_.zip

    redirect_to new_user_registration_url end end end ``` 最后,确保在routes.rb文件中添加Omniauth回调路由: ```ruby devise_for :users, controllers: { omniauth_callbacks: 'omniauth_callbacks' } ``` ...

    Rails GUI Development with Ext JS 10-Jan-08 RUG-B.pdf

    format.ext_json { render :update => { :page => redirect_to(posts_path) } } else format.ext_json { render :json => @post.errors.to_json, :status => :unprocessable_entity } end end end ``` #### ...

    采用UTF-8解决Ruby on Rails程序的中问题

    1.将.rb文件和.rhtml文件都保存为utf-8格式; 2.在/app/Controller/application.rb中增加... 您可能感兴趣的文章:Ruby rails 页面跳转(render和redirect_to)学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rail

    simple_workflow:添加绕路并返回到Ruby On Rails中先前工作流的方法

    将您的“ link_to”行切换为“ detour_to”,并将您的控制器“ redirect_to”切换为“ back_or_redirect_to”,以允许用户从其来访者返回。 概要: 在视图中: detour_to controller: :my_models, action: :...

    Rails API 文档

    Rails 2.0中,控制器继承自ActionController基类,提供了许多方便的方法,如`redirect_to`和`render`。 3. **模型(Model)** 模型代表数据库中的数据,通过ActiveRecord库实现,允许开发者使用Ruby代码操作数据库。...

    rails 邮件支持

    redirect_to root_path else render :new end end ``` 在生产环境中,你需要配置SMTP服务器来实际发送邮件。这通常在`config/environments/production.rb`中进行: ```ruby config.action_mailer.delivery_...

    Ruby on Rails实现最基本的用户注册和登录功能的教程

    redirect_to sessions_new_path else render "new" end end private def user_params params.require(:user).permit(:username, :password, :password_confirmation) end end ``` ##### 3. 设计注册界面 ...

    在Rails中使用SSL

    redirect_to :protocol => 'https://' unless request.ssl? end end ``` 4. **处理回退**:某些浏览器或代理服务器可能不支持SSL,这时需要处理回退情况。在`config/routes.rb`中,可以使用`constraints`来实现...

    Railsgem用于添加Facebook身份验证功能以使用koala进.zip

    redirect_to root_path, alert: "身份验证失败:#{params[:message].humanize}" end end ``` 至此,我们已经完成了大部分工作。为了在视图中添加Facebook登录按钮,编辑`app/views/devise/shared/_links....

    使用Rails上传和转换视频

    redirect_to videos_path, notice: '视频已上传,正在转换。' else render :new end end ``` 注意,这只是一个基本的示例,实际的生产环境中需要处理更多细节,如错误处理、进度跟踪、文件大小限制等。同时,...

    rails-style-guide:社区驱动的Ruby on Rails样式指南

    - 尽可能少地在控制器中创建实例变量,使用`render`或`redirect_to`结束动作。 6. **模型**: - 遵循ActiveRecord的约定优于配置原则,例如,表名通常为复数形式,如`users`。 - 使用`attr_accessor`来定义虚拟...

    通过deviseomni-auth使用facebook登录的示例项目_Ruby_Ja.zip

    <%= link_to "Login with Facebook", user_omniauth_authorize_path(:facebook) %> ``` 完成以上步骤后,你的Rails应用就可以实现通过Facebook账号登录的功能了。用户点击“Login with Facebook”按钮,会被重定向...

    xero-oauth2-omniauth-sample:一个Ruby on Rails示例应用程序,以演示xero-oauth2-omniauth ruby​​ gem的用法

    Xero Ruby Oauth 2演示Rails应用程序 该Rails应用程序演示了如何使用omniauth-xero-oauth2 gem与Xero OAuth2 API进行接口。 该应用程序的快速演示: Ruby&Rails版本 ruby 2.6.0p0 (2018-12-25 revision 66547) ...

    ruby多模型绑定

    redirect_to post_path(@post) end end ``` 此外,为了支持多模型绑定,还需要定义合适的路由。例如,可以使用 `resources` 命令来定义与 `posts` 和 `comments` 相关的 RESTful 路由: ```ruby resources :...

Global site tag (gtag.js) - Google Analytics