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"
)){
string
path = origPath;
int
last = path.LastIndexOf(
"/"
);
string
file = path.Substring(last+
1
);
file = file.Replace(
".aspx"
,
""
);
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