Heroku 子域重复内容?如何重定向到域?

发布于 2024-10-25 22:27:26 字数 122 浏览 1 评论 0原文

Google 已将我的 Heroku 应用程序子域编入索引:myapp.heroku.com

是否存在重复内容?

我应该如何将 myapp.heroku.com 重定向到 mydomain.com?

Google has indexed my Heroku app subdomain: myapp.heroku.com

Is it duplicate content?

How should I redirect myapp.heroku.com to mydomain.com?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

蓝海似她心 2024-11-01 22:27:27

第一个答案部分解决了问题,但引入了一个新问题。

如果您添加 www.myapp.com 和 myapp.com,您将需要在您的应用程序中将其中一个重定向到另一个 - 因此,如果您选择 www.myapp.com 作为您的主要网站,您需要检查是否请求了URL 不是 www.myapp.com 并将请求重定向到 www.myapp.com - 这将正确覆盖传入 myapp.com 和 myapp.heroku.com 的重定向请求。 此处有 Heroku 的文档示例。

此外,您需要删除 Google 已在 Heroku 域上建立索引的内容。您需要使用 Google 网站管理员工具将域名更改为 www.myapp.com -登录网站管理员工具后,这是一个相对简单的过程

The first answer goes part way to solve the problem but introduces a new problem.

If you add www.myapp.com and myapp.com you will then need to take care of redirecting one of these to the other inside your application - so if you choose www.myapp.com as your primary you want to check if the requested URL IS NOT www.myapp.com and redirect the request to www.myapp.com - this will then cover redirects requests coming to myapp.com and myapp.heroku.com correctly. There's an example by Heroku on their docs here.

Also, you need to get rid of the content that Google has already indexed on the Heroku domain. You'll need to use Google WebMaster tools to change the domain to www.myapp.com - it's a relatively simple process once you're logged into webmaster tools

那片花海 2024-11-01 22:27:27

首先,如果您不希望 myapp.heroku.com 被索引,只需在标头中添加机器人元标记并将值赋予“nofollow”即可。

对于重定向,只需添加另一个元标记刷新:

<meta http-equiv="refresh" content="2;url=http://www.heroku.com/">  

内容值以秒为单位,上面的示例将在 2 秒内将访客定向到您的主页。

希望有帮助

first of all if you do not want your myapp.heroku.com to be indexed simply by adding robot meta tag in your header and give the value to "nofollow".

and for redirection just add another meta tag refresh:

<meta http-equiv="refresh" content="2;url=http://www.heroku.com/">  

the content value is in seconds, the example above will direct visiotrs in 2 seconds to your main page.

hope it helps

挽清梦 2024-11-01 22:27:27

使用 hide_heroku gem,它使用 X-Robots-Tag HTTP 标头防止搜索引擎对 *.herokuapp.com 下的任何内容建立索引

Use the hide_heroku gem, it uses X-Robots-Tag HTTP headers to prevent search engines from indexing anything under *.herokuapp.com

浅暮の光 2024-11-01 22:27:26

使用 Heroku 附加自定义域:

heroku addons:add custom_domains:basic
heroku domains:add www.myapp.com
heroku domains:add myapp.com

此外,您必须在域提供商的管理界面上执行一些配置步骤。您需要一个 proxy.heroku.com 的 CNAME 和 Heroku IP 的三个 A-RECORD。您可以在 Heroku 文档中找到它。

编辑以回应下面的另一个答案。您可以在routes.rb中将myapp.com重定向到www.myapp.com:

 constraints(:host => /^communityguides.eu/) do
    root :to => redirect("http://www.communityguides.eu")
    match '/*path', :to => redirect {|params| "http://www.communityguides.eu/#{params[:path]}"}
  end

Use the Heroku add-on custom domains:

heroku addons:add custom_domains:basic
heroku domains:add www.myapp.com
heroku domains:add myapp.com

In addition, you have to take some configuration steps at the admin interface of your domain provider. You need a CNAME to proxy.heroku.com and three A-RECORDs to the Heroku IPs. You find this in the Heroku Docs.

Edit to respond to another answer below. You can redirect myapp.com to www.myapp.com in your routes.rb:

 constraints(:host => /^communityguides.eu/) do
    root :to => redirect("http://www.communityguides.eu")
    match '/*path', :to => redirect {|params| "http://www.communityguides.eu/#{params[:path]}"}
  end
浅笑轻吟梦一曲 2024-11-01 22:27:26

根据 Heroku 文档 对于自定义域,您可以这样做:

class ApplicationController
  before_filter :ensure_domain

  APP_DOMAIN = 'myapp.mydomain.com'

  def ensure_domain
    if request.env['HTTP_HOST'] != APP_DOMAIN
      # HTTP 301 is a "permanent" redirect
      redirect_to "http://#{APP_DOMAIN}", :status => 301
    end
  end
end

我使用这个方法并且效果很好。请注意,由于重定向返回 301 http 状态(永久重定向),因此您的网站不会因重复内容而受到处罚。

301 状态是 Markus 解决方案中唯一缺少的一点,但如果您关心的是 SEO,我认为这是一个重要的点。

编辑:文档中没有的内容,我忘了提及 - 您应该排除您不希望应用重定向的环境。您可以将 if 语句更改为:

if request.env['HTTP_HOST'] != APP_DOMAIN && ENV["RAILS_ENV"] != 'development'

According to Heroku docs for custom domains, you could do it like so:

class ApplicationController
  before_filter :ensure_domain

  APP_DOMAIN = 'myapp.mydomain.com'

  def ensure_domain
    if request.env['HTTP_HOST'] != APP_DOMAIN
      # HTTP 301 is a "permanent" redirect
      redirect_to "http://#{APP_DOMAIN}", :status => 301
    end
  end
end

I use this method and it works fine. Note that since the redirect returns a 301 http status (a permanent redirect) your site won't be penalized for duplicate content.

The 301 status is the only point missing in Markus' solution, but I think it is an important one if your concern is with SEO.

Edit: Something that's not on the docs and I forgot to mention - you should exclude the environments you don't want the redirect applied to. You could change the if statement to something like:

if request.env['HTTP_HOST'] != APP_DOMAIN && ENV["RAILS_ENV"] != 'development'
记忆消瘦 2024-11-01 22:27:26

我建议使用 rack-canonical-host 将 Heroku 的子域重定向到您的自定义域。

I suggest using rack-canonical-host to redirect Heroku's subdomain to your custom domain.

无语# 2024-11-01 22:27:26

rel canonical 是一种可能性
只需输入 , , ...在您的应用页面上。

请参阅 http://www.google.com/support/webmasters/ bin/answer.py?answer=139394

Google 会将规范元素中的网址视为该特定页面的正确资源。

rel canonical is one possibility
just put <link rel="canonical" href="http://mydomain.com"/>, <link rel="canonical" href="http://mydomain.com/page"/>, ... on your app pages.

see http://www.google.com/support/webmasters/bin/answer.py?answer=139394

google will treat the URL in the canonical element as the right ressource for that specific page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文