RSS registrovat login
Navigace: předchozí stranaúvodní strana
URL rewriting v C#

Po chvíli pátrání jak na url rewriting v C# jsem konečně našel jednoduchý způsob, jak na to. Pravda je, že "Chytrý bratr" google toho najde celkem dost, jenže všechno bylo takový nějak moc složitý, aspon na mě :-). Jelikož by to mohlo ještě někoho zajímat, tak jsem se rozhodl sem něco málo k tomu napsat. Další řešení najdete na konci textu.

Asi bych měl ještě napsat, co to je ten rewriting. Pokud to někdo ví, tak ať čte další odstavec, pokud ne, tak nechápu, proč tenhle článek vůbec čte, ale budiž :-). Vetšina webů je dneska dynamická, s generovaným obsahem. Jelikož ten obsah se generuje, tak je potřeba říci, co se má generovat a k tomu slouží parametry - takže url vypadá třeba takto: www.abc.com/show.aspx?doc=1234 . Problém je ale v tom, že se to vypadá blbě a ještě blběji se to pamatuje, asi hlavní problém je ale v tom, že vyhledávačům se takový dokument moc indexovat nechce. Takže je snaha používat "hezké" adresy, pak i generované stránky vypadají jakoby staticky - a url vypadá např. www.abc.com/dokument_o_necem.aspx . To je asi tak všechno důležité.

Takže jak udělat velmi jednoduchý rewriting na pár řádek? Celý vtip je v tom, že v global.asax se odchytí event BeginRequest a pokud se zjistí, že zadaná adresa je virtuální a tudíž neexistuje, tak se zavolá HttpContext.Current.RewritePath() a přesměruje se na skutečnou stránku. V prohlížeči se to nijak neprojeví, takže uživatel vidí pořád tu adresu, jakou zadal.

Nejlepší je podívat se na kód, tady je ukázka - kód umístěte do global.asax.

protected
void
Application_BeginRequest(Object sender, EventArgs e) {
string
origPath = HttpContext.Current.Request.Path;
if
(!origPath.EndsWith(
"default.aspx"
)){
// je to pravdepodobne virtualni a bude se prepisovat
string
path = origPath;
int
last = path.LastIndexOf(
"/"
);
string
file = path.Substring(last+
1
); file = file.Replace(
".aspx"
,
""
);
// zde vlozte kod, ktery zjisti id zaznamu, ktery chcete zobrazit. Je tedy potreba mit nekde
// ulozeno, jakemu nazvu odpovida jake id
if
(id!=
null
&& id!=
""
){ HttpContext.Current.RewritePath(
"default.aspx"
,
""
,
"showDoc="
+id.ToString()); } } }

Syntax higlighted by Syntax highlighter, available at www.4ITDevelopers.net and www.JakNaWin.com

Jak to vypadá v praxi je vidět třeba i na tomto webu, kde rewriting používám také.

Další řešení
na builderu byly zmíněny ještě následující odkazy, viz diskuze.
http://www.urlrewriting.net/
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

Další možností je použít http://www.urlrewriter.net

Děkuji, že jste vydrželi číst tento výtvor až dokonce. Pokud jsem psal nějaké blbosti, tak mě můžete opravit a napsat dole komentář. Díky.

Informace ke stavu builder.cz zde


vytvořil Mi.Chal. 2.8. 2005 22:25, naposledy změněnil Mi.Chal. 25.4. 2009 12:17
přečteno: 3626x

Komentáře:

Skvele - vložil Benjamin Hejda 27.9.2006 10:20:14

Ja si myslim, ze to je genialne jednoduche.


Přidat komentář:
Jméno
E-mail
Web
Titulek
Obsah
thomas sabo rea mbt outlet thomas sabo charms sale louis vuitton taschen kaufen thomas sabo boutique mbt kaufen