一、Why?
1、先來講一講為什么我們要使用url重寫這個東西
2、因為我學習的后端是nodejs,然后我發現nodejs一個非常讓人難受的事,就是它監聽端口不是80和443時,你訪問網頁需要輸入端口,這樣很不友好,比如下面這樣:
3、這樣對用戶很不友好,所以我才打算學一學url重寫,url重寫后就會變成這樣:
4、當然上面的url中的3001也可以修改成其他字母或者多層路徑,這樣就會變得好看多了
二、前置條件
1、首先你得有個IIs服務器 ( ̄▽ ̄)/
2、先去IIS官網下載web平台安裝工具
3、當然是安裝這個工具了٩(๑❛ᴗ❛๑)۶
4、打開這個工具
5、搜索Application Request Routing Cache,或者 應用程序請求路由 ,因為有可能是英文也有可能是中午,所以當一個搜索不到時,搜索另一個語言,一定要在產品全部中搜索
6、安裝后可以一路點擊接受安裝即可
7、接下來安裝url重寫工具,直接搜索url即可,,有可能出現 url 重寫工具 或者 url rewrite
8、和上面安裝請求路由一樣,也可以和請求路由一起添加進去,一起安裝
9、安裝完成,我們前置工作也就成功了
三、應用程序請求路由設置
1、打開IIS工具,選擇上面安裝的請求路由
2、選擇 Server Proxy Settings
3、在中間區域,選擇勾選Enable proxy,不用修改內容,當然也可以根據需求自己修改
4、點擊應用即可,完成請求路由的設置
四、url重寫設置:這邊講解參數,后面有三個寫好的例子使用
1、打開站點,選擇需要url重寫的站點
2、當安裝完成url重寫時,會出現url重寫這個工具,選擇工具,名字也有可能是英文
3、打開工具,選在右側欄第一行添加規則,打開對話框,選擇空白規則
4、輸入名稱,隨意,但是盡量能表示出重寫目標的含義
5、匹配url,請求的url(字面意思):與模式匹配(推薦),與模式不匹配;使用(匹配使用的方式):正則表達式(推薦),通配符,完全匹配;
6、模式:比如說host代表主機域名,則在這里面寫的就是host之后的正則匹配表達式,比如匹配在host/blog/,之下的都轉到nodejs搭建的服務上,則這里填寫^blog/(.*);點擊測試模式,我們填寫下面圖片內容進行測試,發現測試結果中有個{R:1},我們需要將其導向至nodejs搭建的服務,也就是重寫目標
7、忽略大小寫,自然就是字面意思,不多敘述
8、下面便是條件,按照圖片來進行填寫,這里不具體細數條件類型和規則模式填寫,后面有三個例子進行了基本講述,其余的請查看官方文檔
9、服務器變量可以不寫,操作類型可以因情況而定,http站點轉向https時一般使用重定向,其余一般為重定向
重寫URL:比如博客是在nodejs搭建的服務上,並且監聽本地3001端口時,填寫http://127.0.0.1:3001/{R:1},這個{R:1}就是上面模式匹配的字符串,其實訪問www.example.com/blog/index.html,就是相當於訪問http://127.0.0.1:3001/index.html,這樣監聽本地3001,不用開方公網3001,可以減少服務器危險
停止后續規則,自然就是字面意思,一旦勾選后,匹配處理結束,將不再處理下面的其他規則
10、點擊右側欄應用即可,當應用顯示灰色時,證明有必填項沒有填寫,所以無法應用,到這里也就重寫完畢,下面是例子
五、例子
1、http重定向至https
填寫內容 ->
名稱:隨意
模式:(.*) ;代表全部,任意,無論是否字符都匹配
條件:{HTTPS};https,模式^OFF$,代表https關閉,也就是沒有;;;{HTTP_HOST}:填寫要匹配的域名,不能其他的域名訪問到也重定向至這個https,邏輯分組全部匹配,任意匹配是滿足一個條件即可進行下面處理
操作類型:重定向
重定向URL:https://www.example.com/{R:1}
結果相當於 訪問 http://www.example.com/....... 重定向至 https://www.example.com/.......
2、重寫服務,一般使用為nodejs服務,這里不寫條件,一般條件使用為上面的兩種,這里為了截圖方便,不予展示
模式:^blog/(.*)
類型:重寫
目標URL:http://127.0.0.1:3001/{R:1}
結果:訪問:http://www.example.com/blog/index.html --> http://127.0.0.1:3001/inde.html
當然這個127.0.0.1指的是服務器的本地,而不是訪問者電腦本地,這樣使用,可以防止開發太多端口,引起安全問題
3、重寫服務-文件
模式:(.*)phpf$:代表訪問的文件以phpf結尾
類型:重寫
目標URL:http://www.example.com/{R:1}.php
結果:訪問:http://www.example.com/dir/loginphpf --> http://www.example.com/dir/login.php
這樣當后端有其他語言或者不想在前端顯示文件后綴時,可以使用這種方式來進行隱藏,phpf可以自己隨意更改
六、尾記
1、本文記錄目的只是為了防止遺忘
2、當然url重寫不可能這么簡單的使用,我只是需求多少,研究多少,這里只是基本使用,想要更復雜的,則自己可以去官方文檔查看,研究
3、本博客可以隨意轉載,但是請在博文頂部寫上來源:
作者:SpiritLing
地址:https://www.cnblogs.com/spirit-ling/p/8809039.html
Tips:我的博客即將搬運同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=26fheluxu6isc