基本上,我需要 DNS 用不同的 CNAMES 进行响应,具体取决于请求是针对 HTTPS 还是 HTTP 对象。
s.test.com -> IF(https) RESPONSE special.domain.com ELSE simple.domain.com
有可能吗?还有其他可行的方法吗?
答案1
DNS 无法做到这一点。DNS 请求完全独立于原因针对该请求。
为了实现这一点,必须废除整个 DNS 缓存系统。每次发明新方案时,DNS 也必须重写。
你想做什么?可能有更好的方法来解决你的实际问题。
答案2
不。
DNS 无法识别 HTTP 或 HTTPS。
这与向秘书询问某人的电话号码(IP 号码)相比。无论您想问对方什么,您都会得到相同的答复。
答案3
正如大家提到的,您无法使用 DNS 执行此操作。我认为这通常是通过 URL 重定向完成的。例如,如果您使用 Apache 作为 Web 服务器,则可以使用 mod_rewrite 设置重定向规则。然后您可以编写如下规则:
# If HTTPS redirect to special.domain.com
RewriteCond %{HTTPS} =on
RewriteRule .* https://special.domain.com%{REQUEST_URI} [R,L]
# If not HTTPS redirct to simple.domain.com
RewriteCond %{HTTPS} !=on
RewriteRule .* http://simple.domain.com%{REQUEST_URI} [R,L]
这里还有更多示例: http://www.askapache.com/htaccess/ssl-example-usage-in-htaccess.html
答案4
不,DNS 不知道(或关心)哪个协议正在请求查找。