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. 😉
Napiš první komentář! ↓
Zatím tu není žádný komentář... Odstartuj to vyplněním formuláře níže.