XPages — использование амперсанда в строке запроса URL

У меня есть XPage, который передает информацию другому XPage в виде параметра URL (это важно из-за SEO). Я могу использовать: java.net.URLEncoder.encode для кодирования URL-адреса, а затем у меня может быть амперсанд в значении параметра, и я могу использовать только param.get() для получения значений без их декодирования. Это работает нормально, но когда я комбинирую это с заменой на стороне сервера, это не работает должным образом, он возвращает амперсанд обратно к обычному амперсанду, а не к %26. Любые идеи будут действительно оценены здесь? Замена на стороне сервера также важна для SEO.

Обновление:

Это URL-адрес перед отправкой, отображаемый в адресной строке (если предположить, что моя категория — «Фрукты и овощи»):

/product-byCategory/Fruit+%26+Vegetables

Правило подстановки на стороне сервера:

- /product-byCategory/*
- /mywebsite.nsf/xspProductByCat.xsp?cat=*

Значение строки запроса:

cat=Fruit+&+Vegetables

Что интересно, если я наберу этот URL в адресной строке, я получу правильную строку запроса:

http://www.mywebsite.com/mywebsite.nsf/xspProductByCat.xsp?cat=Fruit+%26+Vegetables

person pipalia    schedule 25.10.2012    source источник
comment
Вы можете делать перенаправления в своих xpages при загрузке вместо использования замен.   -  person Thomas Adrian    schedule 26.10.2012
comment
Спасибо, Томас, но я не уверен, что поисковые системы обрадуются этому.   -  person pipalia    schedule 26.10.2012
comment
У вас есть пример URL до/после замены?   -  person Tommy Valand    schedule 26.10.2012
comment
Томми, я обновил вопрос этой информацией - спасибо.   -  person pipalia    schedule 26.10.2012


Ответы (1)


Я столкнулся с той же проблемой, но искал (и нашел) другое решение. Мне не нужна подстановка, я не использую QueryString, и Google, видимо, не возражает.

Я использую этот тип URL:

http://www.mywebsite.com/mywebsite.nsf/xspProductByCat.xsp/Fruit+%26+Vegetable

Вместо QueryString я получаю расширенную информацию через

    var name= facesContext.getExternalContext().getRequestPathInfo();

Страницы веб-сайта, созданного таким образом, корректно индексируются Google и Bing. Мы не совсем довольны рейтингом страниц, но это другая тема.

Вот веб-сайт и пример расширенный URL-адрес

person D.Bugger    schedule 28.10.2012
comment
Большое спасибо D.Bugger - очень интересное решение. На данный момент для этой конкретной проблемы мы преобразовали фрукты и овощи в фрукты и овощи в URL-адресе, а затем, когда он отображается, я использовал @Replacesubstring для замены и на &, и клиент пока доволен этим решением. - person pipalia; 29.10.2012
comment
Мне очень нравится ваше решение, но клиент хочет, чтобы URL-адрес выглядел естественным, а не имел путь к базе данных заметок. Только что попробовал, и это тоже не работает. Я доволен этим решением, в котором я заменяю и на & в пользовательском интерфейсе (я ищу и включаю пробелы, чтобы убедиться, что часть слова не заменена). - person pipalia; 30.10.2012
comment
Я мог бы попробовать объединить ваше решение с заменой на стороне сервера - я предполагаю, что значения могут быть любыми, если мы используем / в качестве разделителя в соответствии с вашим предложением. - person pipalia; 02.11.2012