калитка: сопоставление разных путей к одному и тому же классу по запросу для создания разного контента в разметке

Я разработал систему магазинов. есть страница продукта, на которой перечислены доступные элементы, отфильтрованные по некоторым меню выбора. также есть одна страница сведений об элементе, на которой можно просмотреть некоторый контент о каждом продукте. содержимое этой страницы будет загружено из файла свойств xml. если щелкнуть ссылку в списке элемента, чтобы просмотреть некоторые детали, устанавливается параметр GET для конкретного элемента. со значением параметра я могу динамически загружать содержимое для этого конкретного элемента из моих свойств, изменяя имя загруженного ключа.

Пока все хорошо, но не совсем хорошо. так много на заднем плане. давайте перейдем к некоторым деталям.

Прежде всего, это SEO-мотивы. до сих пор также существует проблема с идентификатором экземпляра страницы в URL-адресе для страниц с полным состоянием не только из-за нестабильного URL-адреса, но и потому, что калитка выполняет 302 перенаправления для управления URL-адресом. возможно, я удалю компоненты с полным состоянием на странице сведений об элементе, чтобы решить эту проблему.

так что теперь на продаваемых продуктах есть 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-адресом, что и в запросе.

Ребята, у вас есть какой-нибудь опыт в этом или какие-то умные идеи? Требования:

  1. Имея один URL-адрес исправления для каждого продукта, бот SE может индексировать
  2. без параметров
  3. без сохранения состояния и с закладками
  4. без 302 перенаправлений каким-либо образом.
  5. Идентификация запрошенного товара должна быть доступна на странице сведений

с уважением из Германии Марсель

0
задан Mar Cel 29 March 2012 в 19:20
поделиться