我有一个购物网站,其工作方式与其他网站略有不同:获得所需产品的唯一方法是通过搜索,我的客户要求不要显示产品类别的链接。
我担心搜索引擎优化,因为爬虫无法访问产品或 View 。哦,我没有提到观点吗?也许对此有更好的说法,但我的客户要求这些 View 必须在 Google 上获得高排名,例如,如果您从我的网站搜索某些产品 location-of-the-product-from-my-site 您应该在顶部结果中获得 mysite.com/search/location-of-the-product-from-my-site/some-product-from-my-site。该 url 是我正在谈论的 View 。
这是该项目的主要特点之一。我可以做些什么来实现这一目标?
最佳答案
我有一些 SEO 公司的经验,你可以使用一些技巧来包含链接而不让它们对用户显示,接近 theomega 提到的内容,但这样做不会对用户永久隐藏它:
Why don't you put a list of products on you website and make it somehow small or move it out of sight, so google follows the links but your customers don't get distracted.
搜索关键字部分的主要部分是内容。 7-10% 的内容应该是与目标关键词相关性强的内容。因此,对于 T 恤,您可以添加衬衫、T 恤、衣服、上衣等词,并且出于营销目的,您可以使用 T 恤类比,例如便宜、实惠、低价等关键字。 7-10% 是神奇的范围,任何超过 10% 的内容都可能被搜索引擎视为垃圾内容,太少则感觉内容与您定位的关键字不相关。
此外,使用您的 <h1> - <h6>明智地标记您的产品名称。以正确的方式强调标题(无论它是否有链接 <a> ref)总是会产生好的结果,尤其是对于谷歌和雅虎。使用一个 <h1>标签做一个主标题并尝试包含一个副标题 <h2>或 <h3>以强调更多的子关键字。
站点地图仍然是一个好主意,但正如 theomega 所说,如果站点上没有与站点地图中提供的链接相关的回溯链接(如导航菜单),它就无能为力了。
做隐藏但爬虫可读链接 可显示,可以使用负 float <div>高z-index:然后使用 JavaScript 或 CSS 在点击或鼠标事件中向用户显示这些链接。
堆栈溢出-黑色-tshirt.html:
<html>
<head>
<title>My Cheap Stack Overflow T-Shirt</title>
<link rel="stylesheet" type="text/css" ref="/style.css">
<meta name="keywords" content="t-shirts, tee, shirts, stack, overflow, black" />
</head>
<body>
<h1>Affordable Tee Shirts for Stack Overflow Users</h1>
<h2>Stack Overflow Logo on Black T-shirt</h2>
<div id="link-floater">
<a href="/cheap-affordable-stack-overflow-tshirts/stack-overflow-black-tshirt.html">Stack Overflow Black Tee Shirt</a>
</div>
<!-- Content starts here -->
<div id="content">
Buy this t-shirt now!
</div>
</body>
<html>
样式.css:
/*This shows a 10px section of the links div (100px width - 90px left:offset)*/
#link-floater
{
display: block;
height: 100px;
left: -90px;
position: absolute;
top: 0;
width: 100px;
z-index: 2;
}
/*Using a hover you can reveal the links*/
#link-floater:hover
{
left: 0;
}
#content
{
display: block;
z-index: 1;
}
这个小代码片段展示了在您的内容中放入关键字的想法,在 <meta> 中帮助搜索引擎分类的标签和用于制作 <div> 的 css漂浮在用户的可见范围之外,但能够被爬虫扫描。
我们显式设置每个 z-index 的原因就是保证 float 的负定位<div>不影响其他元素的布局。
希望这对您有所帮助。
编辑:作为对我的描述的修订,当隐藏链接时,您必须允许一个选项来将它们显示给用户。创建完全隐藏的链接会对您的页面排名产生不良影响,并可能最终从索引中删除。隐藏链接的意图是将搜索引擎可以抓取的内容与查看者可以看到的内容进行比较,这将产生不良影响,除非这是对现有链接的描述(例如站点地图上的链接) ) 以帮助提高屏幕阅读器和盲文生成器的可访问性。
关于language-agnostic - 用于搜索表单的 seo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422193/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
当我使用has_one时,它工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290
寻找有用的ruby的好网站是什么? 最佳答案 AgileWebDevelopment列出插件(虽然不是rubygems,我不确定为什么),并允许人们对它们进行评级。RubyToolbox按类别列出gem并比较它们的受欢迎程度。Rubygems有一个搜索框。StackOverflow对最有用的rails插件和rubygems有疑问。 关于ruby-如何搜索有用的ruby,我们在StackOverflow上找到一个类似的问题: https://stacko
我有很多这样的文档:foo_1foo_2foo_3bar_1foo_4...我想通过获取foo_[X]的所有实例并将它们中的每一个替换为foo_[X+1]来转换它们。在这个例子中:foo_2foo_3foo_4bar_1foo_5...我可以用gsub和一个block来做到这一点吗?如果不是,最干净的方法是什么?我真的在寻找一个优雅的解决方案,因为我总是可以暴力破解它,但我觉得有一些正则表达式技巧值得学习。 最佳答案 我(完全)不懂Ruby,但类似这样的东西应该可以工作:"foo_1foo_2".gsub(/(foo_)(\d+)/
我正在使用带有Rails的Devise,我想添加一个方法“getAllComments”,所以我这样写:classUser在我的Controller中:defdashboard@user=current_user@comments=@user.getAllComments();end当我访问我的url时,我得到了undefinedmethod`getAllComments'for#我做错了什么?谢谢 最佳答案 因为getAllComments是一个类方法,而您正试图将其作为实例方法访问。您要么需要访问它:User.getAllCom
我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试