public virtual IRewriteCacheItem GetRewriteRule(HttpRequest request) { string curpath = request.Path; IRewriteCacheItem cached = GetCachedRewriteRuleMatch(curpath); if (cached == null) { cached = CreateRewriteRuleFromRequest(request); if (cached != null) { CacheRewriteRuleMatch(curpath, cached); } } return(cached); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <remarks>This method might not return if it successfully rewrites the request</remarks> public virtual void TryToRewriteRequest(HttpRequest request) { IRewriteCacheItem item = GetRewriteRule(request); if (item != null) { switch (item.Type) { case RewriteType.Redirect: Response.Redirect(item.Path, true); break; case RewriteType.Rewrite: Server.Transfer(item.Path, true); break; case RewriteType.Resource: throw new Exception("Not yet implemented"); //break; } } }
public virtual void CacheRewriteRuleMatch(string match, IRewriteCacheItem rci) { _rewriteUrls[match] = rci; }