Web.config เปลี่ยนเส้นทาง HTTP เป็น HTTPS ยกเว้นโดเมนย่อย

มีการถามคำถามนี้มาก่อนและฉันได้อ่านคำถามที่แนะนำก่อนที่จะถามตัวเอง น่าเสียดายที่ฉันไม่พบคำตอบที่ต้องการ

ฉันได้เขียนใหม่ในไฟล์ Web.Config เพื่อเปลี่ยนเส้นทางโดเมน TLD จาก HTTP ไปยัง HTTPS ปัญหาที่ฉันมีคือมันเปลี่ยนเส้นทางไซต์โดเมนย่อยด้วย ฉันต้องการให้ TLD เปลี่ยนเส้นทางเท่านั้น ไม่ใช่ไซต์โดเมนย่อย

ตัวอย่างเช่น ฉันมี www.example1.co.za และ www.example2.com

ฉันต้องการให้ http://www.example2.com เปลี่ยนเส้นทางไปยัง https://www..example2.com แต่ไม่ใช่ http://a.example2.com หรือโดเมนย่อยใดๆ ของ www.example2.com

นอกจากนี้ยังต้องเก็บกฎการเปลี่ยนเส้นทางไว้สำหรับ http://example1.co.za เพื่อเปลี่ยนเส้นทางไปยัง https://example1.co.za

นี่คือรหัสกำหนดค่าของฉัน:

<rules>
    <clear />
    <rule name="Redirect to SSL for Mass" stopProcessing="true">
        <match url="(.*)" ignoreCase="true"/>
        <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="example1\.co\.za$" />
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>
        <action type="Redirect" url="https://example1.co.za" />
    </rule>
    <rule name="Redirect to SSL for Pro" stopProcessing="true">
        <match url="(.*)" ignoreCase="true"/>
        <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="example2\.com$" />
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>                         
        <action type="Redirect" url="https://example2.com" />
    </rule>
</rules>

แก้ไข

ฉันพยายามเพิ่มกฎอื่นเพื่อยกเว้นโดเมนย่อย อย่างไรก็ตามฉันได้รับข้อผิดพลาด :(

<rule name="Exclude Sub Sites from Pro HTTPS Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true"/>
                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTP_HOST}" pattern="^*\.example2\.com$" negate="true" />
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                </rule>

person Orion    schedule 06.08.2017    source แหล่งที่มา


คำตอบ (1)


กฎนี้จะเปลี่ยนเส้นทาง:

http://www.example.com เพื่อเปลี่ยนเส้นทางไปที่ https://www.example.com,

http://example.com เพื่อเปลี่ยนเส้นทางไปที่ https://example.com

<rule name="Check SSL" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^(www\.)?example\.com$" />
        <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>                         
    <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
</rule>

regexp ^(www\.)?example\.com$ นี้กำลังกรองคำขอซึ่งมีโฮสต์แตกต่างจาก example.com หรือ www.example.com

person Victor Leontyev    schedule 07.08.2017
comment
สิ่งนี้จะไม่รวมโดเมนย่อยหรือไม่ แล้วมันจะไม่เปลี่ยนเส้นทางไปที่ sub.example.com เหรอ? เพียงแค่ต้องยืนยันก่อนที่ฉันจะทดสอบสิ่งนี้บนเว็บไซต์สด - person Orion; 07.08.2017
comment
ใช่ จะยกเว้นโดเมนทั้งหมด ยกเว้น example.com หรือ www.example.com - person Victor Leontyev; 07.08.2017
comment
ฉันมีกฎ 2 ข้อสำหรับ 2 โดเมนระดับบนสุด มันจะไม่รวมโดเมนอื่นนั้นด้วยหรือไม่ โปรดดูคำถามที่แก้ไขแล้ว - person Orion; 07.08.2017
comment
ตามรหัสนี้ โดเมนอื่นของฉันเริ่มโหลดด้วยคำนำหน้า http มีแนวคิดใดบ้าง - person Rajdip Khavad; 18.12.2018
comment
ไม่ ฉันไม่มีความคิด คุณสามารถสร้างคำถามใหม่โดยใช้กฎ web.config ของคุณ แล้วลองอธิบายปัญหา แล้วฉันจะพยายามตอบ - person Victor Leontyev; 18.12.2018