/* ================================== ~华丽的间隔线~ ================================== */ /// <summary> /// 获取URL重写信息, 根据请求URI信息 /// </summary> /// <param name="uri">用户的请求 uri 信息</param> /// <returns>获取唯一匹配的信息数据</returns> public Model.URLReWriter GetItem_RequestURI(string url_absolute_path) { if (CheckData.IsStringNull(url_absolute_path)) { return(null); } Model.URLReWriter result = this.GetModel(model => { if (CheckData.IsSizeEmpty(model.ReItems)) { return(false); } Model.URLReWriter.RegularQuery requery = null; foreach (Model.URLReWriter.RegularQuery item in model.ReItems) { if (CheckData.IsStringNull(item.Pattern)) { continue; } if (Regex.IsMatch(url_absolute_path, item.Pattern, RegexOptions.IgnoreCase)) { requery = item; break; } } if (!CheckData.IsObjectNull(requery)) { model.ReItems = new Model.URLReWriter.RegularQuery[] { requery }; return(true); } return(false); }, null); return(result); }
/// <summary> /// HTTP 重定向路径 /// </summary> /// <param name="uri">需要的原始路径各部分信息</param> /// <param name="urlmodel">需要的 URL 重定向模型</param> /// <returns>最终生成的重定向路径</returns> public string HTTPRedirectPath(Uri uri, Model.URLReWriter urlmodel) { if (CheckData.IsObjectNull(urlmodel)) { return(string.Empty); } Model.URLReWriterConfig curl = GlobalSystemService.GetInstance().Config.Get <Model.URLReWriterConfig>(); string directory = this.SelfDAL.GetSiteNamePathFolder(curl.RootPage); Model.URLReWriter.RegularQuery rq = urlmodel.ReItems[0]; if (CheckData.IsObjectNull(uri)) { return(string.Format("{0}/{1}", directory, urlmodel.Target)); } string querystr = Regex.Replace(uri.AbsolutePath, rq.Pattern, rq.QueryParameter); if (!CheckData.IsStringNull(uri.Query)) { querystr = string.Format("{0}&{1}", querystr, uri.Query.TrimStart('?')); } string path = string.Format("{0}/{1}?{2}", directory, urlmodel.Target, querystr); return(path); }