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 - това е много интересно решение. За момента за този конкретен проблем преобразувахме Fruit & Vegetables в Fruit and Vegetables в URL адреса и след това, когато се покаже, използвах @Replacesubstring, за да заменя и с & и клиентът е доволен от това решение за момента. - person pipalia; 29.10.2012
comment
Наистина харесвам вашето решение, но клиентът иска URL адресът да изглежда естествено, вместо да има пътеката на бележките db. Просто опитах и ​​това също не работи. Доволен съм от това решение, където замествам и с & в потребителския интерфейс (търся и включвам интервали, за да съм сигурен, че част от думата не е заменена). - person pipalia; 30.10.2012
comment
Може да опитам да комбинирам вашето решение със заместване от страна на сървъра - предполагам, че стойностите могат да бъдат всякакви, ако използваме / като разделител според вашето предложение. - person pipalia; 02.11.2012