Проблема URL IBM Commerce SEO с вызовами Ajax

Я использую WCS7 FEP7. Я только что включил SEO, выполнив следующие шаги.

  1. httpd.conf изменения

RewriteRule ^/(.*)$ /webapp/wcs/stores/servlet/$1 [PT, NC]

  1. wc-server.xml изменения
<SEOConfiguration  defaultUrl=""  dynamicUrl="true" enable="true">
     <context-root-rewrite value="/"/>
 </SEOConfiguration>

Я выполнил задание по генерации ключевых слов. Все URL-адреса SEO подходят хорошо. Но вызовы OOB ajax терпят неудачу.

Не удается добавить в корзину вызов ajax. Я вижу, что http:///AjaxOrderChangeServiceItemAdd Запускается вызов Ajax POST.. Я получаю сообщение об ошибке 404. Где серверу Commerce требуется http:///webapp/wcs/stores/servlet/AjaxOrderChangeServiceItemAdd

Я попытался добавить правило перезаписи, чтобы добавить «webapp/wcs/stores/servlet» для этого конкретного запроса. Поскольку это вызов POST (параметры в теле), он не будет работать должным образом.

RewriteRule /AjaxOrderChangeServiceItemAdd$ /webapp/wcs/stores/servlet/AjaxOrderChangeServiceItemAdd?data=$1 [NC,L]‹

Я что-то пропустил здесь.?

Пожалуйста помоги.


person user3085317    schedule 17.12.2014    source источник


Ответы (3)


Попробуйте это. В приведенном ниже коде вам нужно передать идентификаторы вашего магазина и каталога соответственно.

RewriteEngine on
RewriteRule ^/?$ /webapp/wcs/stores/servlet/TopCategoriesDisplay?storeId=<storeId>&catalogId=<catalogId> [L,QSA,PT]
RewriteCond %{REQUEST_URI} !^/robots.txt$
RewriteCond %{REQUEST_URI} !^/sitemap.xml(.gz)?$
RewriteCond %{REQUEST_URI} !^/solr.*$
RewriteCond %{REQUEST_URI} !^/lobtools.*$
RewriteCond %{REQUEST_URI} !^(/)?$
RewriteCond %{REQUEST_URI} !^/webapp.*$
RewriteCond %{REQUEST_URI} !^/wcsstore.*$
RewriteCond %{REQUEST_URI} !^/ConsumerDirectStorefrontAssetStore.*$
RewriteCond %{REQUEST_URI} !^/wps.*$
RewriteCond %{REQUEST_URI} !^/images/.*$
RewriteCond %{REQUEST_URI} !^/favicon\.ico
RewriteRule ^/(.*) /webapp/wcs/stores/servlet/$1?storeId=<storeId>[QSA,PT]
person Ashutosh Srivastav    schedule 14.01.2015
comment
Спасибо. Теперь это работает. На самом деле, я жестко кодирую идентификатор хранилища, идентификатор каталога в правиле перезаписи, как вы упомянули. Я удалил StoreToken:CatalogToken из файла шаблона URL-адреса SEO. - person user3085317; 15.01.2015
comment
Это то, что мы обычно делаем с contextPath, как это. Вы также можете настроить каталог по умолчанию в CMC. При этом вам не нужно передавать жестко заданный catalogId. Но да, жестко закодированный storeId все еще будет в вашем httpd.conf. Если это решило вашу настоящую проблему, отметьте это как правильный ответ. Это помогло бы другим определить правильный подход. - person Ashutosh Srivastav; 15.01.2015

прочитайте это ниже и попробуйте, это немного отличается от того, что вы сделали

http://www-01.ibm.com/support/knowledgecenter/SSZLC2_7.0.0/com.ibm.commerce.startersstores.doc/tasks/tsmshortenmadisonsurl.htm

person Abed Yaseen    schedule 17.12.2014
comment
Это не помогло. Я выполнил те же действия. CSS и изображения загружаются правильно. Я нашел еще один пост stackoverflow.com/questions/15356244/, но там не было четкого ответа - person user3085317; 18.12.2014

Как указано в http://www-01.ibm.com/support/knowledgecenter/SSZLC2_7.0.0/com.ibm.commerce.starterstores.doc/tasks/tsmshortenmadisonsurl.htm

`Если вы указываете пустой корень контекста, используйте вместо этого следующий формат:

RewriteEngine включен

RewriteRule ^/(?!wcsstore)(.*) /webapp/wcs/stores/servlet/$1 [PT,L]`

Механизм SEO не должен заботиться о том, является ли это запросом POST. Данные отправляются независимо.

Убедитесь, что вы создали вызов AJAX из wcf:url.

http://www-01.ibm.com/support/knowledgecenter/SSZLC2_7.0.0/com.ibm.commerce.component-services.doc/refs/rwvwcfurl.htm

person Daniel Persson    schedule 09.01.2015
comment
Благодарю. ошибка, которую я сделал, заключалась в том, что у нас было условие правила перезаписи. если URL-адрес содержит en-US, то RewriteRule ^/(?!wcsstore)(.*) /webapp/wcs/stores/servlet/$1 [PT,L]` end if Here , URL-адреса, сгенерированные из ‹wcf:url›, не имеют en-US, поэтому перезапись URL для них не выполнялась. - person user3085317; 14.01.2015