ODOO.SH无法将http://www.域名正确重定向至https://www.?求可行方案
Odoo.sh多站点HTTP到HTTPS(www前缀)重定向解决方案
由于Odoo.sh官方拒绝调整Nginx配置实现HTTP到HTTPS的自动重定向,可通过以下几种可行方案解决:
方案1:利用Odoo自带网站重定向功能
进入对应网站的设置 > 网站 > 重定向,添加规则:
- 来源URL:
http://www.odoosh-website.com/* - 目标URL:
https://www.odoosh-website.com/$1 - 重定向类型:永久重定向(301)
该方案无需开发,适合站点数量较少的场景,每个站点需单独配置对应规则。
方案2:通过CDN实现前置重定向
使用Cloudflare等CDN服务接管域名解析,在CDN后台配置页面规则:
- 匹配条件:
http://www.odoosh-website.com/* - 操作:转发URL(状态码301永久重定向)
- 目标URL:
https://www.odoosh-website.com/$1
CDN会在请求到达Odoo.sh之前完成重定向,不依赖Odoo内部配置,适合多站点批量处理。
方案3:自定义Odoo控制器实现全局重定向
开发简单的自定义模块,通过控制器拦截HTTP请求并强制重定向:
创建模块的controllers/main.py文件:
from odoo import http from odoo.http import request class HTTPRedirectController(http.Controller): @http.route('/*', type='http', auth="public", website=True, sitemap=False, priority=100) def redirect_to_https(self, **kwargs): req = request.httprequest if req.scheme == 'http' and req.host.startswith('www.'): new_url = f"https://{req.host}{req.path}" if req.query_string: new_url += f"?{req.query_string}" return request.redirect(new_url, code=301) # 若无需重定向,传递请求至原有路由 return request.dispatch()
安装该模块后,所有指向http://www.开头域名的请求会被自动重定向到对应HTTPS地址,适合技术团队维护的多站点场景。
内容的提问来源于stack exchange,提问作者Ahrimann Steiner
相关产品推荐
相关产品推荐

