Наш веб-сайт DNN переписывает артикул нашего продукта, который является частью строки запроса при переходе со страницы фильтра продукта на страницу подробного обзора продукта.
К сожалению, для некоторых наших продуктов в артикуле используется косая черта, например BD0002 / DSDS.
Мы переходим по URL-адресу https://dnndev.me/Product-View/sku/BD0002/DSDS, но DNN отключит и перезапишет последнюю часть URL-адреса, что приведет к следующему URL-адресу: https://dnndev.me/Product-View/sku/BD0002
Я попытался добавить следующий код Regex в раздел настроек SEO DNN, чтобы игнорировать перезапись страницы, но он делает то же самое.
sku/(.*)/(.*)
Я также заметил, что в настоящее время наш веб-сайт записывает артикул без знака = для строки запроса. В настоящее время это будет / sku /, а не ? Sku =. Я обнаружил, что могу изменить это, добавив | / sku | в регулярном выражении строки запроса.
Я установил расширенный формат URL в файле web.config. Я не хочу менять его на HumanFriendly, так как это ломает наш модуль.
Наша страница фильтра продуктов, которая содержит ссылки на представление продукта, использует шаблон усов с HttpUtility.UrlEncode для QueryStringSKU:
<a href='<%=DetailedPageRedirectLink%>/sku/{{QueryStringSKU}}'>More Info</a>
Затем у нас есть модуль подробного представления продукта, который прослушивает QueryString. Раньше я пытался использовать кодирование и декодирование, но DNN делала свое дело и игнорировала часть кодирования и декодирования, поэтому я написал эту сумасшедшую часть кода, которая удаляет часть URL-адреса, которая не является частью SKU.
string rawurlfromrequest = Request.RawUrl;
string checkifquerystringexist = Request.QueryString["sku"];
if(checkifquerystringexist != null)
{
var cleanSKU = rawurlfromrequest.Split(new[] { "sku/" }, StringSplitOptions.None)[1];
decodeprodCode = cleanSKU.Split(new[] { "&" }, StringSplitOptions.None)[0];
decodeprodCode = decodeprodCode.Split(new[] { "/search" }, StringSplitOptions.None)[0];
decodeprodCode = decodeprodCode.Split(new[] { "?fbclid=" }, StringSplitOptions.None)[0];
decodeSKU = HttpUtility.UrlDecode(decodeprodCode);
}
if (!string.IsNullOrWhiteSpace(decodeSKU) && IsEditable == false)
{
LoadProductDetails(decodeSKU);
}
Итак, я хотел бы знать, как я могу разрешить DNN перезаписывать только первую часть URL-адреса, а не часть SKU строки запроса, если она содержит косую черту?
Я нашел эти ссылки: https://www.dnnsoftware.com/answers/disable-friendly-url-for-one-page
%2F
. - person VDWWD   schedule 18.02.2019