【问题标题】:Issues with https:// non-www re-directing to https://wwwhttps:// 非 www 重定向到 https://www 的问题
【发布时间】:2017-03-14 22:39:21
【问题描述】:

我有一个网站最近从 http:// 移动到 https://

该站点是使用托管在 IIS7 上的 MVC 构建的,我知道我应该为此设置 4 个绑定。

主要的:
https://www.example.com(端口:443 - ip地址:*)

和其他 3 个人都到 301 重定向到上述内容。

    http://www.example.com - (port:80 - ip address: * -re-direct works)
    http://example.com - (port:80 - ip address: * -re-direct works)
    https://example.com - (port:443 - ip address: * -re-direct does not work)

试图解决为什么底部的失败,无法访问站点。找不到服务器 DNS 地址。

下面是我用来将 http 重定向到 https 的代码

            // The base only redirects GET, but we added HEAD as well. This avoids exceptions for bots crawling using HEAD.
            // The other requests will throw an exception to ensure the correct verbs are used. 
            // We fall back to the base method as the mvc exceptions are marked as internal. 

            if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)
                && !String.Equals(filterContext.HttpContext.Request.HttpMethod, "HEAD", StringComparison.OrdinalIgnoreCase))
            {
                base.HandleNonHttpsRequest(filterContext);
            }

            // Redirect to HTTPS version of page
            // We updated this to redirect using 301 (permanent) instead of 302 (temporary).
            string url = "https://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;

            filterContext.Result = new RedirectResult(url, true);

您知道底部装订出了什么问题吗?试图在 Google Webmaster Search Console 上设置第 4 个属性,显然由于 DNS 失败而无法设置。

非常感谢任何帮助。干杯

【问题讨论】:

    标签: http iis https binding


    【解决方案1】:

    最好在网络服务器级别而不是在应用程序代码中执行此类操作。 对于 IIS,您需要通过添加重写规则来更改文件 Web.config。 我无法对其进行测试,但您应该添加类似的内容:

    <rewrite>
      <rules>
        <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true">              
          <match url="*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="example.com" />
          </conditions>
          <action type="Redirect" url="http://www.example.com/{R:0}" />
        </rule>
    
        <rule name="HTTP Redirect to HTTPS" enabled="true" stopProcessing="true">
          <match url="(.*)" ignoreCase="false" />
          <conditions>
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
      </rules>
    

    【讨论】:

    • 您好,感谢您的回复。不幸的是,对此也没有任何乐趣。我担心绑定或 GoDaddy 级别有问题。我觉得奇怪的是 http:// non-www 到 https:// www 工作正常,但 https:// non-www 到 https:// www 却不行。即使没有重定向,我也无法获得 https:// 非 www 的流量:(
    • 你试过response吗?
    【解决方案2】:

    问题出在我们域名提供商的 DNS 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 2019-12-04
      • 1970-01-01
      相关资源
      最近更新 更多