通過 IIS URL Rewrite 將 Http 重新導向 Https 並排除 localhost

現在大多數的網站都需要使用 https URL,為了讓用戶仍可使用舊的 http 位置,這時可以採用轉址策略,讓用戶無痛使用,通過 IIS URL Rewrite 即可完成轉址情境。

安裝 URL Rewrite

https://www.iis.net/downloads/microsoft/url-rewrite

安裝完成之後,可以在站台上面看到它

 

設定轉址規則

接下來就要設定轉址規則,你可以使用 UI 或是直接修改 web.config 裡面的 system.webServer/rewrite 節點,UI 操作最後也是會存放在 web.config

新增新一個,規則,當 URL 為 https 不套用轉址

<system.webServer>
	<rewrite>
		<rules>
		  <rule name="HTTP to HTTPS redirect" stopProcessing="true">
			<match url="(.*)" />
				<conditions>
					<add input="{HTTPS}" pattern="off" ignoreCase="true" />
				</conditions>

				<action type="Redirect" redirectType="Found" 
					url="https://{HTTP_HOST}/{R:1}" />
		  </rule>
		</rules>
	</rewrite>
</system.webServer>	

 

套用成功後,只要網址輸入 http 都會被導向 https,因為沒有 localhost 的憑證,所以我要排除 localhost,加入以下規則

<add input="{HTTP_HOST}" pattern="^localhost(:\d+)?$" negate="true"/>
若有 localhost 憑證則不需要排除

 

這樣一來,在伺服器本機也能訪問 http://localhost:8080 了

localhost 擁有較高的權限,需要這個位置才能訪問

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2019 .NET

Image result for microsoft+mvp+logo