|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
IntroductionMODURL The Easy Way: Package Contents:
You can create a URL rewriting component for asp.net. The two site examples are: Inital Problem:Need a way to create nice URLS that search engines like for a content page. The goal of this was to be able to add content pages to a site, and automatically have the URL rewritten and pull from a DB. The content site has an article summary page and an article detail page. Without URL rewriting the links as the search engine would see them are http://bongofdestiny.com/GenericContentHandler.aspx?ContentID=35 or http://www.collegecupcakes.com/index.aspx?CurrentImageID=211 Couple reason we want to change this:
Look how much better these URLS look: http://www.collegecupcakes.com/Carol-211-Fun.aspx Or http://bongofdestiny.com/Tenacious-D-Explosivo-Video.aspx
NOTE: much thanks to Scott Mitchell from 4GuysFromRolla.com. He created the base set of code that does the hard work. I just extended it to work with a database. This is the original article this is based on: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/urlrewriting.asp Now, lets see how to do this: Step 1:Add a referece to the URLWriter.dll to your asp.net project (1.0 or 2.0 doesn't matter). It is already compiled and ready to go in the download. Step 2:Add the following to your web.config. This tells asp.net to send the request through the URLwriter etc <configSections>
<!-- The <configSections> element must contain a <section> tag for the <RewriterConfig>
section element. The type of the section handler is RewriterConfigSerializerSectionHandler,
which is responsible for deserializing the <RewriterConfig> section element into a
RewriterConfig instance... -->
<section name="RewriterConfig"
type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>
Data base connection to look up the URLS in a table </appSettings>
<add key="MODURLDB"
value="Data Source=[YourSQLServer];Initial Catalog=[DataBaseName];User ID=[YourUserID];Password=[YourPassword]"/>
</appSettings>
This tells asp.net what to use for the httpmodules <httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
</httpModules>
(There is a sample web.config in the download for this source code Step 3:Create the tables in the database using the scripts URLWriterDBTableScripts.sql The page table is "PageMod" which lists the "LookFor" and "SendTo". When a request is made, the http handlers will look for the URL in the dataset, and if it finds it, it sends it to the "sendTo". If it doesnt find it, it passes the request on normally. This creates 2 tables: PageMod: holds the "LookFor" & "SendTo" columns for the urlrewriter engine Step 4:Set the connection string in the web.config file for the URL Rewriter
When the request comes in for: http://bongofdestiny.com/Tenacious-D-Lyrics-Kyle-Quit-The-Band.aspx or http://www.collegecupcakes.com/Carol-211-Fun.aspx It is sent to http://bongofdestiny.com/GenericContentHandler.aspx?ContentID=43 or http://www.collegecupcakes.com//index.aspx?CurrentImageID=211 So in the table your would have [SAMPLE LOOK FOR ROOT]
~/Tenacious-D-Lyrics-Kyle-Quit-The-Band\.aspx
or
~/Carol-211-Fun\.aspx
(The final slash before the .aspx is so the regular expression engines can quick look for it. [SAMPLE SEND TO ROOT]
~/GenericContentHandler.aspx?ContentID=43
or
~/index.aspx?CurrentImageID=211
So that is the basics of how the thing works. This is my first article, so please let me know if it all works. Source code information:In the source code, RewriterConfiguration.cs This is the data access component to access the database Appconfig setting:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||