Пример #1
0
        /* ================================== ~华丽的间隔线~ ================================== */

        /// <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);
        }
Пример #2
0
        /// <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);
        }