如何在web.config中将非www http重定向到https www

时间:2018-07-11 20:17:59

标签: url-rewriting web-config iis-8.5

我想将以下所有类型的请求重定向到https://www.example.com

http://example.com
http://www.example.com
https://example.com

2 个答案:

答案 0 :(得分:0)

这取决于您如何重定向。你可以...

  1. 从客户端重定向。这很容易做到,只需在页面HTML文档的<head>中添加一个包含以下内容的脚本标签即可。

    let excluded = ['http://www.example.com', 'https://example.com', 'http://example.com']
    
    if (excluded.indexOf(location.origin) !== -1) {
      location.href = 'https://www.example.com'
    }
    

    此代码只有一个问题,就是浏览器可能抱怨重定向过多。第二种选择更安全。

  2. 如果您知道如何使用,可以使用.htaccess。您将在Web服务器的根目录中找到此文件。添加以下行:

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    

    (查看this question以获得更多信息。)

  3. 如果页面不是严格静态的,则可以从后端重定向。有多种方法可以执行此操作,最有可能的方法是仅在发出请求时而不是在页面加载时使用forcedomain(我个人最喜欢)之类的npm模块进行重定向。这样效率更高,浏览器也不会胡闹。

  4. 使用多个CNAME记录。如果您不熟悉DNS,则可以忽略答案的这一部分。基本上,创建一个CNAME,其中主机是@,值是www。这会将所有请求发送到顶点域(example.com),并将它们重定向到子域(www.example.com)。对于协议问题,有几种方法可以做到这一点,最好的选择是通配符重定向(如果您的注册商提供了此功能)。

一般来说,最好使用DNS记录,.htaccess文件或某种后端插件(如果可能的话)进行重定向(如果您知道的话)。这一切都取决于您的托管,网站的性质(静态或动态)以及您对此类事物的了解程度。

答案 1 :(得分:0)