Rammi.cz

Rammi.cz náhodný obrázek

mod_rewrite pro ASP.NET

Prosinec 16th, 2005 · Zatím nejsou komentáře · Programování

Jeden z nejpopulárnějších modulů pro apache se jmenuje mod_rewrite, stará se o přepisování URL před vyřízením požadavku vlastním webovým serverem, takže s jeho pomocí lze zpracovat odkazy na v podstatě neexistující stránky. Také se s ním řeší ochrana proti hotlinkování atd, ale to není důvod k tomuto spotu.
V .NET je možno jednoduše dynamicky přepisovat URL v global.asax souboru, za pomocí regullar expressions, stejně jako je tomu na apachi.
Pokud byste tedy chtěli místo URL
http://rammi.cz/category.aspx?id=585
použít raději
http://rammi.cz/~category/vse/humor/vtipy-585

pak vám bude stačit přidat do global.asax např. tuto funkci – je ovšem třeba znát regulární výrazy.

private void rewriteURL()
{
Regex oReg = new Regex(@"~Category.*-(\d*)$");
Match oMatch = oReg.Match(HttpContext.Current.Request.Path);
if (oMatch.Success)
{
HttpContext.Current.RewritePath(oReg.Replace(HttpContext.Current.Request.Path, "category.aspx?id=$1"));
}
}

No a tuto funkci pak prostě jednoduše zavoláte ze sekce Application_BeginRequest

void Application_BeginRequest(Object sender, EventArgs e)
{
rewriteURL();
}

Pak už není složité dopsat si i funkci, která bude číst regullar expressions ze souboru a bude v podstatě fungovat stejně jako onen zmiňovaný mod_rewrite, ale pro mé účely (jedna pevně daná podmínka) je zbytečné se tím zatěžovat.
Mod_rewrite je mimochodem použit i na tomto serveru, stačí kliknout na kategorie, název článku… vlastně skoro všude. 😉

Tagy:

Napiš první komentář! ↓

Zatím tu není žádný komentář... Odstartuj to vyplněním formuláře níže.

Co si myslíš ty?

Copyright Abago Holding s.r.o.,
všechna práva vyhrazena.
Navštivte také další projekty: Služby:  Digi Reality - Realitní vyhledávač | Ušetřím.cz - Vyhledávač cen | Inzerce Dýně.cz - Inzerce zdarma |
Zábava: PeckaSMS.cz - vyhrajte super ceny | 101her.cz - Online hry zdarma |
TOPlist TOPlist