You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重定向非www域名URL到带www的URL以解决Adsense访问问题

解决方案:将不带www的URL重定向到带www的URL

针对你在Heroku部署的Rails站点,结合GoDaddy域名托管的情况,提供以下几种可行方案:

1. 优化GoDaddy DNS配置(优先操作)

之前的域名转发可能无法覆盖所有HTTP/HTTPS场景,建议调整DNS记录并设置永久重定向:

  • 登录GoDaddy域名管理后台,进入DNS管理界面
  • 删除原有转发设置,添加两条CNAME记录:
    • 不带www的[webURL].co.uk,指向你的Heroku应用域名(格式如yourappname.herokuapp.com)
    • 带www的www.[webURL].co.uk,同样指向上述Heroku应用域名
  • 开启GoDaddy的域名转发+掩码功能,选择将不带www的域名以301永久重定向到带www版本,同时勾选"转发所有路径"

2. Rails应用层面设置全局重定向

如果DNS配置后仍存在问题,可在应用内通过两种方式实现:

方法A:路由约束实现

在config/routes.rb中添加全局重定向规则:

Rails.application.routes.draw do
  # 保留原有路由配置

  # 重定向所有不带www的请求到带www的地址
  constraints(host: /^(?!www\.)/i) do
    match '*path', to: redirect { |params, request|
      "https://www.#{request.host}/#{params[:path]}"
    }, via: [:get, :post, :put, :patch, :delete]
  end
end

同时在config/environments/production.rb中配置默认域名:

config.action_controller.default_url_options = { host: 'www.[webURL].co.uk' }

方法B:使用rack-rewrite中间件

  1. 在Gemfile中添加依赖:
gem 'rack-rewrite'
  1. 执行bundle install后,在config/application.rb中配置中间件:
config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
  r301 %r{.*}, 'https://www.[webURL].co.uk$&', if: proc { |rack_env|
    rack_env['SERVER_NAME'] != 'www.[webURL].co.uk'
  }
end

3. Heroku端补充配置

  1. 先在Heroku添加所有需要的域名:
heroku domains:add [webURL].co.uk
heroku domains:add www.[webURL].co.uk
  1. 启用SSL端点插件(适配标准SSL配置):
heroku addons:create ssl:endpoint
  1. 在Heroku应用设置里开启"Force HTTPS",确保所有HTTP请求自动转成HTTPS

验证效果

配置完成后,用以下方式测试:

  • 访问http://[webURL].co.uk/ads.txt和https://[webURL].co.uk/ads.txt,确认是否自动跳转到https://www.[webURL].co.uk/ads.txt
  • 也可以用curl命令查看状态码:
curl -I http://[webURL].co.uk/ads.txt

正常情况会返回301 Moved Permanently,且Location字段指向目标地址

内容的提问来源于stack exchange,提问作者StuLondon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:10:33