我的旧网站是否被正确重定向?

时间:2015-12-13 19:26:27

标签: ruby-on-rails redirect heroku

大约一年前,我将三个网站(oldsite.com,oldsite.nu,newsite.se)合并为一个,我保留在其中一个域(newsite.se)上。我不确定这是否已经完成,因为即使在一年之后我仍然会看到来自谷歌的旧网址流量很多。

旧网站重定向代码

重要的编辑说明:我最近意识到名称服务器不再指向我的旧rails应用程序了,而是指向我的web主机上的php文件夹,其中我有一个带有以下内容的.htaccess代码:

RewriteEngine on
RewriteRule ^robots.txt - [L]
RewriteRule ^sitemap.xml - [L]
RewriteRule ^(.*)$ http://www.newsite.se/$1 [R=301,L]
  

这使得以下部分(关于oldsite.com/oldsite.nu)无效:   .com和.nu是在Ruby on Rails中构建的,并在Heroku上托管。

     

从oldsite.com/oldsite.nu重定向路径的逻辑已经完成   完全在newsite.se网站上。重定向代码   oldsites是第一行的直接重定向   在oldsite.com上的routes.rb中:

  match "/(*path)" => redirect {|params, req| "http://www.newsite.se/#{params[:path]}"},  via: [:get, :post]

我使用此(瑞典语)工具验证此重定向实际上是否进行了301重定向:http://301redirect.se。它确认重定向为301。

Newsite.se重定向处理程序

每个旧网站上的内容与新网站上的相同内容相匹配,很少在同一条路径上,例如。

oldsite.com/categories/vacation/item/1243

可能导致

newsite.se/product-items/1243

我主要在内部重定向控制器中处理这些类型的重定向,该控制器捕获并重定向newsite.se上的任何流量,如:

newsite.se/categories/vacation/item/1243 -> newsite.se/product-items/1243

在我的newsite.se routes.rb底部使用它:

match '*not_found_path', :to => 'redirections#not_found_catcher', via: :get, as: :redirect_catcher, :constraints => lambda{|req| req.path !~ /\.(png|gif|jpg|txt|js|css)$/ }

这很好用。

编辑20151223:我使用Newsite.se处理重定向的原因是因为它包含重定向路径的所有逻辑。 Oldsite.com/.nu几乎不可能知道。

采取的措施

在301之外重定向(据我所知,我这样做)。我还使用Google网站管理员工具制作了一个更改地址的请求#34;从我的旧两个网站到我的新网站。我无法再找到有关此信息的任何信息,但我确信我得到了WMT的积极回应,这项游戏已经完成(但我不是百分百肯定)。

问题指示

我不是百分之百确定有什么问题,但我看到有迹象表明我认为重定向不正确,以至于谷歌真的意识到网站没有被移动。

  • 在Google网站站长工具和"传入链接"顶级链接域名是herokuapp.com,在术语上表示oldsite.com。即301重定向似乎被解释为链接(而不是重定向)。
  • 我经常在Google WMT上获得关于" Not founds / 404" (对于在newsite.se上无法访问的网址,不知道英文版本中的内容)。当我检查这些网址的来源时,我经常看到来自例如网址的链接。 oldsite.nu/oldpath/productitem/1234 - 像某人(谷歌?)仍然访问过这个旧网址。其中一个重要的部分是我没有那么多链接到旧网站,所以我不希望这些链接来自仍在提供流量的旧链接。
  • 我仍然可以访问许多旧路径(来自oldsite.com/oldsite.new)。我通过我的重定向控制器找到了这个,它每天都在旧路径上处理大量请求。
  • 该网站在Google SERP中失去了很多职位,但这只是一个微弱的迹象,因为可能有很多原因。

解决问题

  • 我该如何解决这个问题?
  • WMT将301&#39作为链接是否正常?
  • 有没有一种比我的routes.rb-match line更智能的方法来处理来自oldsite.com的重定向?

1 个答案:

答案 0 :(得分:3)

我必须为移动大型电子商务网站的客户做类似的举动,该网站要求将所有旧流量转换到新网站,并将相应的产品重定向到新的路径。

为了让所有内容都得到转换,我们不会失去谷歌排名,我们必须如上所述实施301重定向。在WMT中,他们似乎依靠你来处理它,而不是将它作为支持的功能。

<强>方法

  

您应该将旧域中的每个网址重定向到相应的网址   新网址。这是记录在案的&amp;推荐改变你的方式   根据谷歌的域名。

最好的方法是处理控制器中的重定向,并有逻辑将其发送到301的实际页面,一旦登陆新网站就不再重定向。

我建议如下:

routes.rb (oldsite.com/oldsite.nu)

匹配请求并将其发送到控制器以处理更精细的逻辑和301.

match "/(*path)", to: 'redirector#catch_all',  via: [:get, :post]

RedirectorController (oldsite.com/oldsite.nu)

def catch_all
    # Separate the rest of the link into its components
    # I will use the example of the vacation -> product-items you have
    options = params[:path].split('/')
    options.reject! { |e| e.to_s.empty? } # Remove trailing junk if any
    if options[0] == 'categories'
        redirect_to "http://www.newsite.se/product-items/#{options.last}", notice: 'Product Updated! We Have A New Site.', status: 301
        return # the return here is a MUST for more complex if-then and multiple redirect_to's
    elsif options[0] == 'contact'
        redirect_to "http://www.newsite.se/contact-us", notice: 'We moved, Contact us Here.', status: 301
        return
    elsif options.empty? || options.blank?
        redirect_to "http://www.newsite.se/", notice: 'That page no longer exists, Please browse our new site', status: 301
        return
    else
        more_sorting(options)
    end
end

private

def more_sorting(options)
    case options
    when options[2].....
        redirect_to ....., notice: '', status: 301
        return
    when options[3].....
        redirect_to ....., notice: '', status: 301
        return
    when options[4].....
        redirect_to ....., notice: '', status: 301
        return
    end
end

为什么这样做:

这将导致搜索引擎机器人和用户仍然能够抓取并访问每个页面和链接,并被重定向到与新网站相关联的特定页面。

此外,它处理此服务器上的301重定向,并且不会导致新服务器上的其他重定向。你可能会受到一些惩罚,用户体验和机器人解释你试图联合网站。 (这也很可能会删除链接301的解释)

如果您需要更复杂的路由,您可以在RedirectController中添加(我必须这样做)私有函数,以便更深入地分析我作为中最后一个else的参数

<强>澄清吗

如果您有任何其他问题,如果有帮助,请告诉我。