代码之家  ›  专栏  ›  技术社区  ›  TejSoft

如何强制在SSL下浏览网站的某些部分?

  •  0
  • TejSoft  · 技术社区  · 9 年前

    在我们的网站上,某些部分或页面涉及敏感的用户或帐户信息。我想强制用户在HTTPS下浏览这些页面。而其他具有公共内容的页面应该在HTTP下可用。我计划在IIS上安装url重写模块,并编写规则来实现这一点。我不确定如何在web.config中编写重定向规则。

    服务器:IIS 7.5

    SSL下的页面示例:

    1. 我的网站.com.au/login

    2. 我的网站.com.au/login/

    3. 我的网站.com.au/成员
    4. 我的网站.com.au/member/dashboard
    5. 我的网站.au/member/account
    6. mywebsite.com.au/member/。。。。。。。。。。

    所有不属于上面指定的URL模式的页面只能在http下浏览。

    2 回复  |  直到 9 年前
        1
  •  1
  •   ProNotion    9 年前

    Umbraco已经附带了UrlReoriging.net组件。请检查 config 文件夹中,您将找到urlrewiting.config,这是实现所需功能的一种潜在方法。以下是规则的示例 可以 外观(未测试):

    <add name="ForceSSLLogin"
      virtualUrl="^http://(.*)/login(.*)"
      rewriteUrlParameter="ExcludeFromClientQueryString"
      destinationUrl="https://$1/login$2"
      redirect="Domain"
      ignoreCase="true" />
    
    <add name="ForceSSLMembers"
      virtualUrl="^http://(.*)/member(.*)"
      rewriteUrlParameter="ExcludeFromClientQueryString"
      destinationUrl="https://$1/member$2"
      redirect="Domain"
      ignoreCase="true" />    
    

    我并不喜欢这个解决方案,因为如果有人更改了成员区域页面的名称,url重写将不再有效。

    你不知道你使用的是什么版本的Umbraco,但实际上可能更好的是尝试这样的软件包:

    HTTPS重定向

    HTTPS重定向提供了一种基于文档类型(别名)、节点id或模板别名将URL从HTTP切换到HTTPS(SSL)的简单机制。

    https://our.umbraco.org/projects/website-utilities/https-redirect

        2
  •  0
  •   TejSoft    9 年前

    下面是我为实现http->https和https->http重定向。请注意,在http->https重定向,您还必须将css、js和图像文件的请求从http重定向到https,否则浏览器可能会拒绝执行这些文件。

    You can also check the discussion on IIS forum.

    <rewrite>
        <rules>
            <rule name="HTTPS to HTTP redirect" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="ON" />
                    <add input="{URL}" pattern="^/login" negate="true" />
                    <add input="{URL}" pattern="^/member" negate="true" />
                    <add input="{URL}" pattern="^/(.*)(.js|.css|.png|.jpg|.woff)" negate="true" />
                </conditions>
                <action type="Redirect" redirectType="Permanent" url="http://{HTTP_HOST}/{R:1}" />
            </rule>
            <rule name="HTTP to HTTPS redirect login" stopProcessing="true">
                <match url="^login" />
                <conditions>
                  <add input="{HTTPS}" pattern="OFF" />
                </conditions>
                <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/login/" />
            </rule>
            <rule name="HTTP to HTTPS redirect member" stopProcessing="true">
                <match url="^member/(.*)" />
                <conditions>
                  <add input="{HTTPS}" pattern="OFF" />
                </conditions>
                <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/member/{R:1}" />
            </rule>
            <rule name="HTTP to HTTPS redirect resources" stopProcessing="true">
                <match url="http://(.*)(.css|.js|.png|.jpg|.woff)" />
                <conditions>
                  <add input="{HTTPS}" pattern="ON" />
                </conditions>
                <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}{R:2}" />
            </rule>         
        </rules>
    </rewrite>