Turn: ASP. NET 2.0 uses httphandler to implement URL rewriting (pseudo URL and pseudo static)

Source: Internet
Author: User
Sometimes we will see the address "outputs"/aspx/show. aspx? Type = 12 & id = 34 ", why? There are multiple reasons: First, enhance the friendliness of the URL. Remember the ratio of show-12-34.html to/aspx/show. aspx? Type = 12 & id = 34 "is it easy to remember? The second is to facilitate search engine indexing. Many search engines prefer static html pages, such as Baidu. The second is for security reasons because the parameters "type" and "ID" are hidden ". Is it interesting?

In fact, this is implemented using URL rewriting. Next I will talk about it in ASP. what I know in net2.0 is the simplest implementation method: The Implementation interface "ihttphandler" is used to take over HTTP requests, follow me!

1. Add a Class, ClassCodeAs follows:

Reference content // class urlrewriter Program List:
Using system;
Using system. Data;
Using system. configuration;
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;
/// <Summary>
/// Urlrewriter URL rewriting class
/// Author: Yoyo
// Blog: http://yangmingsheng.cn/
/// </Summary>
Public class urlrewriter: ihttphandler // implements the "ihttphandler" interface.
{
Public urlrewriter ()
{
//
// Todo: add the constructor logic here
//
}
Public void processrequest (httpcontext context)
{
Try
{
// Obtain the original URL blocking Parameter
String url = context. Request. rawurl;
// Create a regular expression
System. Text. regularexpressions. RegEx Reg = new system. Text. regularexpressions. RegEx
(@ "/Show-(\ D +) \... +", system. Text. regularexpressions. regexoptions. ignorecase );
// Match with a regular expression
System. Text. regularexpressions. Match m =
Reg. Match (URL, URL. lastindexof ("/"); // match from the last "/"
If (M. Success) // match successful
{
String realpath =
@"~ /Aspx/show. aspx? Type = "+ M. Groups [1] +" & id = "+ M. Groups [2];
// Context. response. Write (realpath );
// Context. rewritepath (realpath); // (rewritepath is used in cookieless session state .)
Context. server. Execute (realpath );
}
Else
{
Context. response. Redirect (context. Request. url. tostring ());
}
}
Catch
{
Context. response. Redirect (context. Request. url. tostring ());
}
}
/// <Summary>
/// Members required to implement the "ihttphandler" Interface
/// </Summary>
/// <Value> </value>
/// Author: Yoyo
// Blog: http://yangmingsheng.cn/
Public bool isreusable
{
Get {return false ;}
}
}

2. Add the setting items in the web. config file.

Add the following code under the <system. Web> node:

Program code <Add verb = "*" Path = "*/show -? *-? *. Aspx "type =" urlrewriter "/>
</Httphandlers>

Explanations:

Verb indicates one or more of the permitted actions "get", "Post", and "put". The asterisk "*" indicates that all actions are allowed;

A path is a matching path that supports Simple wildcards;

Type indicates the bound class name and namespace (if any );

By the way, you must first create a web form "show. aspx" under the directory "aspx", because this file is a page that actually accepts the request and displays the relevant content.

OK !, Compile, open the website input address http: // localhost/show-12-34.aspx access, check to see if it is displayed "/aspx/show. aspx? What about type = 12 & id = 34 ?!

The above settings match the aspx file, because the. html extension in IIS is not taken over by ASP. NET by default. If you want to take over the HTML request,
Map the IIS extension. html to "C: \ WINDOWS \ Microsoft. NET \ framework \ v2.0.50727 \ aspnet_isapi.dll ",
Then, change the above aspx to HTML:

<Httphandlers>
<Add verb = "*" Path = "*/show -? *-? *. Html "type =" urlrewriter "/>
</Httphandlers>

Open the website and enter the address http: // localhost/show-12-34.html to visit ~!

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.