Я разработал систему магазинов. есть страница продукта, на которой перечислены доступные элементы, отфильтрованные по некоторым меню выбора. Существует также одна страница сведений об элементе для просмотра содержимого каждого продукта. содержимое этой страницы будет загружено из файла свойств xml. если щелкнуть ссылку в виде списка элемента, чтобы просмотреть некоторые подробности, устанавливается параметр GET для конкретного элемента. со значением параметров я могу динамически загружать содержимое для этого конкретного элемента из моих свойств, изменяя имя загруженных ключей.
пока все хорошо, но не очень хорошо. так много на заднем плане. давайте перейдем к некоторым деталям.
больше всего, это некоторые вещи, мотивированные SEO. до сих пор существует также проблема с идентификатором экземпляра страницы в URL для страниц с полным состоянием, не только из-за нестабильного URL, но и из-за того, что wicket выполняет 302 перенаправления для управления URL. возможно, я решу эту проблему с помощью компонентов Statefull, чтобы решить эту проблему.
так что теперь на продаваемых товарах есть QR-код, содержащий ссылку на мою страницу с подробностями. эти ссылки не разработаны мной, и, как вы можете себе представить, они выглядят очень по-разному, как фактический URL. допустим, URL-адрес QR-кода будет "/ shop / item1", где item1 будет названием продукта. мой класс страницы будет ItemDetailPage.
Я написал IRequestMapper, который монтирую в своем WebApplication # init (), который разрешает URL-адрес входящих запросов и проверяет, должен ли он быть разрешен этим IRequestMapper. Если это так, я создаю свою страницу с помощью PageProvider и возвращаю обработчик запросов для нее.
public IRequestHandler mapRequest(Request request) {
if(compatibilityScore>0) {
PageProvider provider = new PageProvider(ItemDetailPage.class, new ItemIDUrlParam(request.getUrl().getPath().split("/")[1]));
provider.setPageSource(Application.get().getMapperContext());
return new RenderPageRequestHandler(provider);
}
return null;
}
Итак, как вы можете видеть, я создаю параметр, который может обрабатывать моя страница сведений. Но полученный URL не очень хорош. Я хотел бы сохранить исходный URL-адрес, сопоставляя его с закладками, без какого-либо перенаправления.
Моей первой мыслью было реализовать URLCodingStrategy для перестройки URL-адреса с его параметрами в форме пути. Я думаю, что HybridUrlCodingStrategy делает что-то подобное.
После разрешения пути URL-адреса "/ shop / item1 /" с помощью IRequestMapper он будет выглядеть как "/ shop / item? 1? Id = item1", где первый параметр вне курса - это идентификатор экземпляра страницы калитки, который, скорее всего, будет удален как Я перестрою страницу с подробной информацией, чтобы она не имела состояния :(
после применения HybridURLCodingStrategy он может выглядеть как "/ shop / item / 1 / id / item1" или "/ shop / item / id / item1" без идентификатора экземпляра страницы. другой идеей было бы удалить вторую часть пути и имя параметра и использовать только значение параметров, чтобы URL выглядел как «/ shop / item1», то есть тот же URL, что и в запросе.
Ребята, у вас есть опыт с этим или какие-нибудь умные идеи?
Reuuirements являются
- Имея один фиксированный URL для каждого продукта, бот SE может индексировать
- без параметров
- без гражданства и закладка
- нет 302. Перенаправляет в любом случае.
- удостоверение личности запрашиваемого предмета должно быть доступно для подробной страницы
с наилучшими пожеланиями из Германии
Marcel