Sitecore - переписать «» в «-» в URL, но разрешить дефисы в качестве допустимых имен

Я прочитал полдюжины руководств по переписыванию пробелов для чего-то более дружественного в Sitecore, но все они полагаются на <encodeNameReplacements/> Sitecore элемент, который также отменяет замену, требуя, чтобы «-» был недопустимым символом для имен.

Проблема в том, что URL нашего приложения содержит "-" в имени хоста. Sitecore переписывает это в результате 404.

Есть ли у кого-нибудь идеи о том, как сделать это переписывание URL-адресов в Sitecore, не полагаясь на <encodeNameReplacements и по-прежнему разрешая "-" как законный название предмета персонажа? Наша текущая лучшая идея - использовать что-то более сложное, чем простое «-», такое как «-» или «_». Это не очень хорошая идея, поэтому я был бы признателен, если бы вы поняли, ребята, по этому вопросу.

РЕДАКТИРОВАТЬ: мы запускаем установку на нескольких сайтах с Sitecore 6.5

4 голоса | спросил Jesan Fafon 26 AMpFri, 26 Apr 2013 01:12:28 +040012Friday 2013, 01:12:28

2 ответа


0

Итак, если я правильно понял, вы хотите заменить пробелы в именах элементов на другие, более дружественные к SEO символы. Какую бы замену вы ни настраивали, вам нужно будет применить преобразование с обеих сторон уравнения (каламбур). Поэтому '-' или '_' должны стать недопустимыми символами имени элемента.

Обычно я думаю, что это плохая идея, и мои редакторы контента будут определять точные URL-адреса своего контента.

Но если вам абсолютно необходимо реализовать это, как правило, одним из решений является реализует пользовательский обработчик для изменения вашего реального имени элемента , оставляя отображаемое имя элемента в его первоначальной форме.

Надеюсь, это поможет.

ответил Elena Zlateva 26 AMpFri, 26 Apr 2013 03:28:45 +040028Friday 2013, 03:28:45
0

Какую версию и сборку Sitecore вы используете?

Я только что просмотрел Sitecore.Links.LinkProvider в Sitecore.Kernel и метод BuildItemUrl заменяет только символы encodeNameReplacements в части пути URL-адреса, поэтому имя вашего хоста должно быть оставлено в покое.

Я ожидаю, что то же самое произойдет в обратном порядке, и, глядя на Sitecore.Pipelines.HttpRequest.SiteResolver, SiteContext разрешается путем сопоставления запрошенного Uri с определенным места. Далее процесс Sitecore.Pipelines.HttpRequest.ItemResolver декодирует URL-адрес элемента, но сайт уже был разрешен на этом этапе.

Полагаю, вы установили атрибут hostName в <site> элементы? Вы также пытались установить атрибут targetHostName? Вы пытались установить несколько имен хостов, я не ожидаю, что он будет работать с пробелами, но стоит попробовать, если то, что вы говорите, верно:

<site name="website" hostName="my-site.com|my site.com"  ... />

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

ответил jammykam 26 AMpFri, 26 Apr 2013 03:29:03 +040029Friday 2013, 03:29:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132