以前用url重寫時是用的ms urlrewriter,用了以後發現了很多不足,自定義功能太弱,而且隨著重寫規則的增加,web.config可能會越來越大,實際上,url重寫就是實現ihttphandler介面.
整個流程分二步走:
1、用乙個xml檔案來儲存重寫規則,其中這些規則是一些簡單的正規表示式
2、實現ihttphandler介面
首先看一下xml檔案的格式:
<?xml version="1.0" encoding="utf-8" ?>相信上面的xml大家都能看懂.[0-9]+).html$]]>
using system;ok,ihttphandler介面就被實現了,下面稍配一下web.config就可以實現url重寫了using system.io;
using system.data;
using system.configuration;
using system.collections.generic;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.text;
using system.text.regularexpressions;
using microsoft.visualbasic;
//regexinfo結構,用來儲存從xml檔案中讀取到的資料
public struct regexinfo
}//ipfilter結構,用來儲存被封的ip
public struct ipfilter
}public class htmlhttphandler : ihttphandler //實現ihttphandler介面
}string path = context.request.path.tolower(); //獲取當前訪問的重寫過的虛假url
foreach (regexinfo r in _regex_list)
path = regex.replace(path, r._before, r._after); //匹配出其真實的url
context.server.execute(path);
}// override the isreusable property.
public bool isreusable
}}
在web.config的中加入
表示字尾名為.html的檔案全部交給htmlhttphandler類去處理最後配一下iis就行了
至於簡繁的轉換,你可以加到processrequest中,至於如何實現轉換,到我的blog上找找吧
Nginx實現URL重寫
本文利用nginx實現url重寫,本文使用nginx與靜態頁面配合重寫url。結合本文場景,需要安裝nginx。url重寫是指將乙個url請求重新寫成 可以處理的另乙個url的過程。這樣說可能不是很好理解,舉個例子來說明一下,在開發中可能經常遇到這樣的需求,比如通過瀏覽器請求的http localh...
Nginx實現URL重寫
本文利用nginx實現url重寫,本文使用nginx與靜態頁面配合重寫url。結合本文場景,需要安裝nginx。1.1 關於linux系統安裝nginx可以參考我的文章 傳送門 url重寫是指將乙個url請求重新寫成 可以處理的另乙個url的過程。這樣說可能不是很好理解,舉個例子來說明一下,在開發中...
不想醜陋之實現動態url
urlpatterns url r admin include admin.site.urls url r index hello.views.index url r login hello.views.login url r logout hello.views.logout 前面我們這樣乙個個手...