草庐IT

javascript - SEO 和在同一页面上将重定向与 HREF 混合

coder 2024-03-01 原文

我目前正在处理的电子商务网站有多个办事处/网站(澳大利亚、加拿大、欧洲等),我们正在努力改造该网站,使其更符合 SEO 并提高我们在 Google 上的排名.最初我们有一个 Jquery 对话框弹出窗口,询问用户他们的发货国家(通过下拉列表),然后我们确定商品将从哪个站点发货并将它们重定向到适当的站点文件夹(http://www. mydomain.com/en-ca 等)通过 Javascript

我们被建议出于 SEO 目的更改此设置,并通过将它们包裹在 href 标签中列出我们运送到的所有国家/地区,并删除初始对话框。自从我们进行更改以来,我们曾有客户不小心访问了错误的站点,并在他们无法订购他们想要的东西时发起投诉,因为各个站点上的库存存在差异。

我们现在正在考虑制作一个门户页面,它是上述解决方案的混合版本。将我们的办公地点列为一个简单的 href,然后在其下方有一个“如果您的国家/地区未列出,请从下拉列表中选择它”,这将通过 javascript 将他们重定向到正确的站点。

我的问题是,将 javascript 与 href 一起重定向会损害我们的 SEO 吗? Google 的抓取工具会查看下拉菜单、重定向并阻止它并拒绝抓取网站的其余部分吗?

我们几乎可以运送到世界任何地方,但根据用户的运送国家/地区,商品将来自哪个办公室并不明显。 (例如,我们的加拿大办事处是一应俱全。如果某人来自新西兰,那么他们应该在我们的澳大利亚办事处,但如果他们来自中国,他们会去我们的加拿大站点。)

所有“站点”都在同一个域下,但在虚拟文件夹下,mydomain.com/en-ca、mydomain.com/en-au 等等,并且共享相同的代码。 (显然每个显示的股票都会不同,货币也会相应变化)

[编辑] 在页面右上角的页眉中,它表示运送国家/地区,这将是用户选择的国家/地区,不一定是用户所在的网站。这样做的目的是,如果用户选择中国并看到以加元为单位的价格,他们可以看到他们位于显示的发货国家/地区的正确站点上。我们通过 javascript 函数在重定向之前设置 cookie 来跟踪他们的选择,但后来我们更改了代码,将每个国家/地区作为带有查询字符串的 href,最终将设置发货国家/地区 cookie 以跟踪他们的选择。

最初该站点被编码为默认为加拿大,如果未设置运送国家/地区 cookie,我们会向他们显示一个弹出窗口,要求他们进行选择。 (一位外部顾问告诉我们去掉这个,因为谷歌将无法抓取该网站,但我想不出为什么会这样)自从去掉最初的弹出窗口后,我们有几个来自客户的投诉,他们没有意识到默认情况下他们在加拿大网站上,因为现在它不是那么明显(我们仍然显示了运输国家,但它不像带有初始弹出窗口的原始设计那样直截了当)。

最佳答案

为什么需要用 javascript 重定向?您可以将带有 href 的链接标记列表放入正确的站点。

您还可以使用地理定位功能来尝试检测用户位置。

另一个解决方案是将每个人都送到加拿大商店,当他们第一次到达时打开一个弹出窗口询问他们的位置。然后,Google Bot 会首先看到加拿大商店。

关于javascript - SEO 和在同一页面上将重定向与 HREF 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940960/

有关javascript - SEO 和在同一页面上将重定向与 HREF 混合的更多相关文章

  1. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  2. ruby - Rails 关联 - 同一个类的多个 has_one 关系 - 2

    我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下

  3. ruby - 将 spawn() 的标准输出/标准错误重定向到 Ruby 中的字符串 - 2

    我想使用spawn(针对多个并发子进程)在Ruby中执行一个外部进程,并将标准输出或标准错误收集到一个字符串中,其方式类似于使用Python的子进程Popen.communicate()可以完成的操作。我尝试将:out/:err重定向到一个新的StringIO对象,但这会生成一个ArgumentError,并且临时重新定义$stdxxx会混淆子进程的输出。 最佳答案 如果你不喜欢popen,这是我的方法:r,w=IO.pipepid=Process.spawn(command,:out=>w,:err=>[:child,:out])

  4. ruby - 在参数为 `yield self` 的方法中使用 `&block` 和在没有参数 `yield self` 的方法中使用 `&block` 有什么区别吗? - 2

    我明白了defa(&block)block.call(self)end和defa()yieldselfend导致相同的结果,如果我假设有这样一个blocka{}。我的问题是-因为我偶然发现了一些这样的代码,它是否有任何区别或者是否有任何优势(如果我不使用变量/引用block):defa(&block)yieldselfend这是一个我不理解&block用法的具体案例:defrule(code,name,&block)@rules=[]if@rules.nil?@rules 最佳答案 我能想到的唯一优点就是自省(introspecti

  5. ruby - 在 ASP 页面上 Mechanize 中断 - 2

    require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie

  6. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  7. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

  8. ruby - 在 Ruby 中,为什么 Array.new(size, object) 创建一个由对同一对象的多个引用组成的数组? - 2

    如thisanswer中所述,Array.new(size,object)创建一个数组,其中size引用相同的object。hash=Hash.newa=Array.new(2,hash)a[0]['cat']='feline'a#=>[{"cat"=>"feline"},{"cat"=>"feline"}]a[1]['cat']='Felix'a#=>[{"cat"=>"Felix"},{"cat"=>"Felix"}]为什么Ruby会这样做,而不是对object进行dup或clone? 最佳答案 因为那是thedocumenta

  9. ruby - 每个页面上的 Jekyll 分页 - 2

    据我们所知,Jekyll默认分页仅支持index.html,我想创建blog.html并在那里包含分页。有什么解决办法吗? 最佳答案 如果您创建一个名为/blog的目录并在其中放置一个index.html文件,那么您可以向_config.yml表示paginate_path:"blog/page:num"。不是使用根文件夹中的默认index.html作为分页器模板,而是使用/blog/index.html。分页器将根据需要生成类似/blog/page2/和/blog/page3/的页面。这将使您到达yourwebsite.com/b

  10. ruby 变量作为同一对象(指针?) - 2

    >>a=5=>5>>b=a=>5>>b=4=>4>>a=>5如何将“b”设置为实际的“a”,以便在示例中,变量a也将变为4。谢谢。 最佳答案 classRefdefinitializeval@val=valendattr_accessor:valdefto_s@val.to_sendenda=Ref.new(4)b=aputsa#=>4putsb#=>4a.val=5putsa#=>5putsb#=>5当您执行b=a时,b指向与a相同的对象(它们具有相同的object_id).当你执行a=some_other_thing时,a将指向

随机推荐