在 IIS 7.5 上運行的 ASP.NET 應用程序上強制使用 Https (Force Https on an ASP.NET app running on IIS 7.5)


問題描述

在 IIS 7.5 上運行的 ASP.NET 應用程序上強制使用 Https (Force Https on an ASP.NET app running on IIS 7.5)

I am forcing SSL on my entire site with the following code on my web.config file;

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
                <match url="(.*)"/>
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$"/>
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
            </rule>
        </rules>
    </rewrite>
</system.webServer>

but what I would like to do is to force ssl only the ~/purchase/ and ~/account/ path and under them. what should be the match url for that? 

NOTE Regular Expressions also would work for me here as well as wildcard. 

‑‑‑‑‑

參考解法

方法 1:

You should use this pattern (this will work for /purchase/something as well as /account/something‑else):

^((purchase|account)/.*)$

You have to remember, that URL should have no leading slash /.

<?xml version="1.0" encoding="UTF‑8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Force HTTPS" stopProcessing="true">
                    <match url="^((purchase|account)/.*)$" />
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

方法 2:

you would do something like this (2 separate rules for simplicity)

  <match url="/purchase/(.*)"/>

(by tugberkLazyOnePeter Bromberg)

參考文件

  1. Force Https on an ASP.NET app running on IIS 7.5 (CC BY‑SA 3.0/4.0)

#ASP.NET #RegEx #HTTPS #iis #iis-7






相關問題

System.Reflection.Assembly.LoadFile 鎖定文件 (System.Reflection.Assembly.LoadFile Locks File)

如何在沒有全局變量的情況下一直保留我的變量? (How can I keep my variable all the time without global variables?)

C# / ASP.NET - Web 應用程序鎖定 (C# / ASP.NET - Web Application locking)

關閉模態對話框窗口後 ASP.NET 刷新父頁面 (ASP.NET Refresh Parent Page after Closing Modal Dialog Window)

無法將 NULL 值傳遞給數據庫 (Unable to pass NULL value to database)

wcf:將用戶名添加到消息頭是否安全? (wcf: adding username to the message header is this secure?)

使用 ASP.Net 教初學者 Web 開發的小項目想法 (Small projects ideas to teach beginners web development using ASP.Net)

SQL Server - 分組、擁有和計數 (SQL Server - Group by, having and count in a mix)

企業庫異常處理應用程序塊和日誌記錄應用程序塊在 ASP.NET 中的正確使用 (Enterprise Library Exception Handling Application Block and Logging Application Block proper use in ASP.NET)

來自proc的asp.net多個結果集:是否有必要將結果映射到類?如果是這樣,怎麼做? (asp.net multiple result set from proc: is it necessary to map results to class? If so, how?)

如何在測試工具中實例化 asp.net 代碼隱藏類? (How can I instantiate an asp.net codebehind class in a test harness?)

Web 窗體用戶控制事件,需要在頁面加載後添加 (Web Form User Control Event, needs to be added after page loads)







留言討論