URL重寫之實現IHttpHandler介面

2022-02-01 18:28:17 字數 1596 閱讀 8972

以前用url重寫時是用的ms urlrewriter,用了以後發現了很多不足,自定義功能太弱,而且隨著重寫規則的增加,web.config可能會越來越大,實際上,url重寫就是實現ihttphandler介面.

整個流程分二步走:

1、用乙個xml檔案來儲存重寫規則,其中這些規則是一些簡單的正規表示式

2、實現ihttphandler介面

首先看一下xml檔案的格式:

<?xml version="1.0" encoding="utf-8" ?>

[0-9]+).html$]]>

相信上面的xml大家都能看懂.

using system;

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

}}

ok,ihttphandler介面就被實現了,下面稍配一下web.config就可以實現url重寫了

在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 前面我們這樣乙個個手...