haproxy - 在一次重定向中将 www 重定向到非 www 并将 http 重定向到 https?
问题描述
我一直试图让这个工作,但不能。
我知道我可以使用以下方式重定向 http -> https:
http-request redirect scheme https code 301 if !{ ssl_fc }
我知道我可以使用以下方式重定向 www -> non-www:
http-request redirect prefix https://%[hdr(host)] code 301 if { hdr_beg(host) -i www }
// although note this doesn't work for me, it does nothing
我需要以下内容:
http://example.com/any-uri -> https://example.com/any-uri
http://www.example.com/any-uri -> https://example.com/any-uri
https://www.example.com/any-uri -> https://example.com/any-uri
如何使用单个 301 重定向同时执行 http -> https 和 www -> 非 www?
谢谢
解决方案
我有一个解决方案,尽管它需要两个规则。
http-request redirect prefix https://%[hdr(host),regsub(^www\.,,i)] code 301 if { hdr_beg(host) -i www. }
http-request redirect scheme https code 301 if !{ ssl_fc }
基于上述情况,将发生以下情况,所有这些都只有一个重定向:
http://example.com/any-uri -> https://example.com/any-uri
http://www.example.com/any-uri -> https://example.com/any-uri
https://www.example.com/any-uri -> https://example.com/any-uri
这是因为第一条规则捕获http://www...
和https://www...
URL 并将它们重定向到https://example.com
. 剩下的情况是http://example.com
第二条规则通过简单的重定向到https://example.com
.
推荐阅读
- jmeter - Jmeter - 分布式(远程)测试执行从连接在执行过程中关闭
- javascript - 使用 router.get('/me', (res,req) => {}) 时如何访问身份验证信息
- javascript - 如何使用 javascript 减少实时日期/时间字符串?
- python - 使用 Python 从网页抓取到动态表
- javascript - 在这种情况下如何优化我的变量?
- arrays - 我可以在继承的对象上覆盖 'ComVisible(false) 吗?(vb)
- python - 'tk.wm_attributes("-topmost", 1) 中的那个是什么意思?
- flutter-bloc - 冻结 - 一组密封类,其中一些具有其他人没有的字段 - 导致 bloc.state 无法访问缺少的字段
- java - 错误:org.json.JSONArray 无法转换为 JSONObject
- assembly - 理解 ARM 向量表汇编声明的语法