`
rubyrock
  • 浏览: 23026 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Ruby on Rails实战之二:网站搜索引擎优化上篇

阅读更多

 

SEO对网站推广的作用是至关重要的。Ruby on rails作为现代的专为web量身定制的框架,处理SEO相当便利。今天,我来分享一下在实际的ROR网站运营中的SEO的一些Tips。

 

1.页面基本元素SEO

页面基本元素设置是做页面级SEO中最基本,最简单,同时也是最重要的处理。页面基本元素的设置,简单的说就是 页面title,description,keywords的设置。

 

这些元素的的内容可以采用简单的方法直接设置,通常在controller的action里设置变量@title,然后在view中引用,例如下面的代码:

 

# 在  controoler action 中的代码

...
@title = "这是页面标题"
...

#在view中的代码
...
<title><%= @title %></title>
...
 

上面的方法简单明了。但是title等页面数据本属于view层的内容,放在action中设置并不直观,也不易修改,我使用的是另外一种方法,代码如下:

 

# 在 ApplicationHelper 中定义方法

  #set the title for the page
  def title(page_title)
    content_for(:title) do 
       "#{page_title} - xx网"
    end
  end 
  #set the description for the page
  def description(page_description)
    content_for(:description) do 
      "<meta name=\"description\" content=\"#{page_description}\" />\n"
    end
  end
  #set the keywords for the page
  def keywords(page_keywords)
    content_for(:keywords) do 
      "<meta name=\"keywords\"  content=\"#{page_keywords}\" />\n"
    end     
  end

 

#layout application 的代码

...
  <title><%= yield(:title) || 'xx网'%></title>
  <%= yield(:description)%><%= yield(:keywords)%>
...
 

 

# 具体页面view的代码

<% title "这个是页面title" -%>
<% description "这个是页面描述" -%>
<% keywords "ror页面seo" -%>
....

这样,每个页面的title等元素都是在自己页面view中,便于设置和修改。

 

2.去除干扰信息

SEO中一个重要的概念就是内容和主题(关键字)越契合,排名就可能越靠前。但是在页面显示内容是常常会显示一些不相关的内容,例如边栏工具条,广告内容等。

这个时候常常把这些内容写成javascript  document.write输出,搜索引擎会忽略javascript中的内容,从而达到去除干扰信息的目的。

ror可以把这个方法很好的包装,以更方便的使用,看代码:

 

  #在 ApplicationHelper中定义如下方法  
  
  #html to javascript
  def document_write(options={},&block)
    pos = output_buffer.length
    block.call
    str = output_buffer[pos..-1]
    output_str = "<script type=\"text/javascript\">\ntry {\n"
    str.each_line do |s|
      output_str << "document.write(\"#{s.rstrip}\");\n"
    end
    output_str << " } catch(err) { } \n </script>\n"
    output_buffer.replace("#{output_buffer[0..pos]}\n#{output_str}")
  end

 

这个时候,view中希望以document.write输出的内容写成

...
<% document_write do %>
   it is very good.
   haha<%=Time.now%>
   <%="very good"%>
   这里面的文章将通过javascript输出
   <input type='text' name='yes' value='hello'/>
<% end %>
...
 

实际输出html如下

<script type="text/javascript">
try {
document.write("");
document.write("   it is very good.");
document.write("   hahaFri May 29 00:20:06 +0800 2009");
document.write("   very good");
document.write("   这里面的文章将通过javascript输出");
document.write("   <input type='text' name='yes' value='hello'/>");
 } catch(err) { } 
 </script>

 

下篇讲一下如何做相关推荐,以及如何编织站内链接网,待续。

 

 

 

 

 

 

 

 

分享到:
评论
5 楼 telephone999 2013-01-03  
output_buffer这个方法没有定义怎么办?
4 楼 edokeh 2009-09-29  
title的那个问题有简单的办法的,就像liuqiang说的那样,可以参见这里

http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield
3 楼 javy_liu 2009-09-17  
def document_write(options={},&block) 
  pos = output_buffer.length 
  block.call 
  str = output_buffer[pos..-1] 

如果用
def document_write(options={},&block) 
  #pos = output_buffer.length 
  str = block.call 
  #str = output_buffer[pos..-1] 
去掉注消的部分会有问题么?

2 楼 liuqiang 2009-09-09  
应该是在具体的视图页面中加
引用
<% content_for :title do %>
  <%= @topic.title %>
<% end %>


BTW:没注意,这是篇同步到论坛的博客
1 楼 qichunren 2009-05-30  
很不错。 

这个网站有很多有用的rails方面的seo技巧。
http://www.seoonrails.com/
http://www.bingocardcreator.com/articles/rails-seo-tips.htm
虽然时间有些早,但很实用。

相关推荐

    动态网站全套教程保证能下载

    - 如何进行网站的SEO优化,提高搜索引擎排名。 ### 结语 动态网站全套教程覆盖了从理论到实践的全面知识体系,对于初学者和有经验的开发者都是宝贵的学习资源。掌握这些知识不仅可以帮助你构建功能强大的网站,还...

    毕业设计博客系统.zip

    - SEO优化:元标签设置,提高搜索引擎的可见性。 4. **学习与实践**:对于学生来说,此项目是理解Web开发流程和实践全栈技能的好机会。你可以: - 分析项目结构,了解前后端的交互方式。 - 阅读源代码,学习框架...

    Project-Jas-TV:西班牙电视节目的电视时间表

    这个项目的核心技术是使用了Ruby on Rails框架的早期版本2.1.0dev,同时结合了jQuery 1.1.2进行前端交互,构建了一个高效且用户友好的网站。 首先,让我们深入了解Ruby on Rails(RoR)。RoR是一个基于模型-视图-...

    价值3000元的某家教网源码

    8. **SEO优化**:为了提高搜索引擎的可见性,源码可能会包含SEO友好的元素,如元标签、静态化页面等。 9. **错误处理与日志记录**:良好的源码会包含错误处理机制和日志记录,帮助开发者排查问题,提升系统的稳定性...

    Laravel开发-disqus .zip

    Laravel是由Taylor Otwell创建的一个现代PHP框架,它的设计灵感来自于Ruby on Rails。Laravel提供了许多内置特性,如路由、中间件、模型-视图-控制器(MVC)架构、数据库迁移、单元测试等,使得Web应用开发变得更加...

    国际象棋主题网站模板

    2. 后端开发:可以采用WordPress、Django、Ruby on Rails等CMS或框架搭建,便于内容管理。 3. 数据库:MySQL或MongoDB存储棋谱、用户信息、论坛帖子等数据。 4. API集成:可能与第三方对弈平台(如lichess.org)集成...

    Go Web开发实战,基于Go语言,Beego框架开发的B2C模式的电商系统。.zip

    - Beego是一个快速开发Web应用的Go框架,它借鉴了Python的Django和Ruby on Rails的设计模式。 - Beego提供了一个简单但功能强大的MVC(Model-View-Controller)结构,帮助开发者快速构建Web应用程序。 - Beego...

    writing:我的博客。 目前正在积极开发中

    2. **后端开发**:选择合适的服务器端技术,如Node.js、Python的Django或Flask、Ruby on Rails等,构建博客的数据存储和处理功能。 3. **数据库设计**:考虑如何存储和管理博客文章、评论、用户信息等数据,可能涉及...

    WebDevelopment

    最后,考虑到用户体验和性能优化,Web开发者还需要关注SEO(搜索引擎优化)、网站性能分析(如Google Lighthouse工具)、响应式设计(确保网页在不同设备上表现良好)以及无障碍访问性(WCAG标准)等方面。...

    Laravel开发-feriados

    Laravel由Taylor Otwell创建,它的设计灵感来源于Ruby on Rails,但采用了PHP语言。Laravel提供了丰富的功能,如路由、控制器、中间件、模型、视图、数据库迁移、Eloquent ORM(对象关系映射)以及Artisan命令行工具...

Global site tag (gtag.js) - Google Analytics