IIS将非WWW重定向到WWW以及HTTP到HTTPS ISSUE

时间:2018-04-15 13:43:38

标签: asp.net iis web-config iis-8.5

我想在IIS 8.5中将非WWW重定向到WWW以及HTTP到HTTPS。如果用户键入http://example.comhttp://www.example.comhttps://example.com,则会将其全部重定向到https://www.example.com

这是我的web.config文件

public async Task<Result> SomeAction()
{
    var client = new AmazonSQSClient();

    // List all queues that start with "aws".
    var request = new ListQueuesRequest
    {
        QueueNamePrefix = "aws"
    };

    var response = await client.ListQueuesAsync(request);

    // rest of the code
}

请注意,在IIS中我只有1个绑定,这是example.com,问题是:对于重定向到https://www.example.com的所有网址,但IIS的起始页面不是我的Default.aspx,而是我输入https://www.example.com/Default.aspx,它会给出404错误。

1 个答案:

答案 0 :(得分:1)

您需要将每个主机名绑定到一个网站。任何未明确绑定到网站的主机名(或服务器IP地址)都将由IIS中的默认网站处理(绑定* - 表示未绑定到正在运行的网站的任何主机名)。

一个不错的简单设置是在IIS中创建2个网站(让我们称之为ApplicationRewrites) - 一个用于托管您的应用程序,另一个用于处理将其他域重写到您的主域。您绑定到Rewrite网站的任何域都会将其流量重定向到https://www.example.com

Application网站

  • 仅在端口443(仅限SSL)
  • 上绑定应用程序主机名www.example.com
  • 将您的应用程序部署到此webroot

Rewrite网站

  • 在IIS中创建一个新网站,并为其webroot创建一个新文件夹。
  • 在端口443和端口80上绑定example.com。仅在端口80上绑定www.example.com

Rewrite网站webroot文件夹中创建一个web.config,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect any traffic to Primary hostname" enabled="true" stopProcessing="true">
          <match url="(.*)" />
          <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>        
  </system.webServer>
</configuration>

访问http://example.comhttps://example.comhttp://www.example.com的所有流量都将重定向到https://www.example.com(包括任何路径/查询字符串)

注意:您可以将默认网站用作Rewrite网站,或将通配符*绑定从默认网站移至新的Rewrite网站 - 将任何域名重定向到您的网站https://www.example.com - 但这是不好的做法/不建议。