IIS通過URL重寫將www的域名301到不帶www的域名和強制使用https訪問網(wǎng)站
時間:2023-02-19 17:28:01 | 來源:建站知識
時間:2023-02-19 17:28:01 來源:建站知識
IIS通過URL重寫將www的域名301到不帶www的域名和強制使用https訪問網(wǎng)站:其實強制非www域名和https博主以前都是在做域名解析的時候做的DNS解析來實現(xiàn)的,可無奈在幾天前被阿里云坑了一波之后,由于博主修改了一些DNS的配置,導(dǎo)致現(xiàn)在未備案域名不能在DNS級別做301重定向了,所以博主無奈之下只有研究在服務(wù)器級別做301重定向了,也把這次經(jīng)歷記在這里,方便大家有用到的時候便于參考。
無論是出于安全還是搜索引擎優(yōu)化的原因,我們都希望網(wǎng)站在訪問多個類似的域名時,最好能重定向到統(tǒng)一的域名,比如博主的網(wǎng)站可以通過以下這些域名來訪問:
http://masuit.net
http://www.masuit.net
http://www.masuit.com
http://masuit.com
http://*.
http://masuit.comhttps://www.masuit.com
https://*.
http://masuit.comhttps://masuit.com
但是,我并不希望訪問上面這些不同域名出現(xiàn)相同的頁面,這對SEO來說也不友好,所以我們需要將上面這些地址都統(tǒng)一的永久重定向到
https://masuit.com,那么怎么來實現(xiàn)呢?
http重定向到https
1.首先,我們需要在服務(wù)器上給IIS安裝URL Rewrite這個插件和導(dǎo)入你的SSL證書。
2.打開“IIS管理器”控制臺,在左側(cè)菜單中選擇要應(yīng)用重定向的網(wǎng)站,找到URL重寫,雙擊進去:
3.單擊右側(cè)菜單中的“添加規(guī)則”。
4.在“入站”部分中選擇“空白規(guī)則”,然后按“確定”:
5.輸入任何規(guī)則名稱,你知道是什么意思就好了,比如“重定向到https”。
6.在“匹配URL”部分中:
- 在“請求的URL”下拉菜單中選擇“與模式匹配”
- 在“使用”下拉菜單中 選擇“正則表達式”
- 在“模式”部分輸入以下模式:“(.*)“
- 選中”忽略大小寫“框
7.在“條件”部分中,選擇“邏輯分組”下拉菜單下的“全部匹配”,然后按“添加”。
8.在提示窗口中:
- 輸入“{HTTPS}”作為條件輸入
- 從下拉菜單中選擇“與模式匹配”
- 輸入“^OFF$”作為模式
- 按“確定”
- 輸入“{HTTPS_HOST}”作為條件輸入
- 從下拉菜單中選擇“與模式不匹配”
- 輸入“^(localhost)”作為模式
- 按“確定”
9.在“操作”部分中,選擇“重定向”作為操作類型,并為“重定向URL”指定以下內(nèi)容:
https://{HTTP_HOST}/{R:1}
10.選中“附加查詢字符串”框。
11.選擇您選擇的重定向類型。整個“操作”部分應(yīng)如下所示:
注意:可以在該菜單中選擇4種重定向規(guī)則的重定向規(guī)則:
- 永久(301) - 在這種情況下的首選類型,它告訴客戶端站點的內(nèi)容永久移動到HTTPS版本。有利于SEO,因為它為您的HTTPS網(wǎng)站帶來了所有流量,對其在搜索引擎中的排名產(chǎn)生了積極影響。
- 找到(302) - 僅當您將某些頁面的內(nèi)容暫時移動到新地點時才應(yīng)使用*。這樣SEO流量有利于先前內(nèi)容的位置。通常不建議將此選項用于HTTP / HTTPS重定向。
- 請參閱其他(303) - GET請求的特定重定向類型。不推薦用于HTTP / HTTPS。
- 臨時(307) - 302重定向類型的HTTP / 1.1后繼。不推薦用于HTTP / HTTPS。
12.單擊“操作”菜單右側(cè)上方的“應(yīng)用”即可。
www重定向到不帶www
1.按剛才的套路,先做上面的步驟1-7。
2.條件配置如下:
-條件輸入:{HTTP_HOST}
-檢查輸入的字符串是否:與模式匹配
-模式:^www/.(.+/..+)$
3.操作部分配置如下“重定向URL”指定以下內(nèi)容:
https://{HTTP_HOST}/{R:1}
4.單擊“操作”菜單右側(cè)上方的“應(yīng)用”即可。
太麻煩了?這有現(xiàn)成的
上面做那么多操作,其實就是生成了一段配置,放到了我們網(wǎng)站程序的web.config
<rewrite xdt:Transform="Insert"> <rules> <rule name="重定向到https" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> <add input="{HTTPS_HOST}" pattern="^(localhost)" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> <rule name="強制重定向到不帶www的頂級域名" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAny"> <add input="{HTTP_HOST}" pattern="^www/.(.+/..+)$" /> </conditions> <action type="Redirect" url="https://{C:1}/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> </rules></rewrite>
我們只需要將上面的代碼放到web.config中的system.webServer配置節(jié)下保存即可。
轉(zhuǎn)自原文: