2013-04-25 1 views
4

Sitecore의 공간을 더 친숙한 것으로 다시 작성하는 방법에 대한 6 개의 지침을 읽었지만 모두 Sitecore의 <encodeNameReplacements/> 요소에 의존합니다. 또한 "-"가 불필요한 이름 인 것을 요구하는 교체를 뒤집습니다.Sitecore - URL에서 ""을 "-"로 다시 작성하지만 대시를 유효한 항목 이름으로 허용합니다.

이 문제는 응용 프로그램의 URL에 호스트 이름에 "-"가있는 것입니다. Sitecore가 결과를 404로 다시 작성합니다.

누구나 <encodeNameReplacements에 의존하지 않고 Sitecore에서이 URL을 다시 작성하고 법적 항목 이름 문자로 "-"을 허용하는 방법에 대한 아이디어가 있습니까? 우리의 현재 가장 좋은 아이디어는 "-"또는 "_"와 같은 평범한 "-"보다 다소 복잡한 것을 사용하는 것입니다. 이것은별로 좋은 생각이 아니므로, 여러분이이 문제에 관해 어떤 통찰력을 가지고있어 주셔서 감사합니다.

편집 : 우리는 내가 제대로 가정하고, 당신이 다른 검색 엔진 친화적 문자 항목 이름에 공백을 대체 할, 그래서 Sitecore 6.5

+0

다중 사이트 구현을 실행하고 있습니까? – jammykam

+0

예. 우리는 두 개의 사이트를 운영하고 있습니다. –

답변

2

을 멀티 사이트 설치를 실행하고 있습니다. 어떤 대체를 구성하든 방정식의 양면에 변형을 적용해야합니다 (말장난 의도). 따라서 '-'또는 '_'는 불법 항목 이름 문자가되어야합니다.

일반적으로이 작업을 수행하는 것은 좋지 않지만 내 콘텐츠 편집기가 콘텐츠에 대한 정확한 URL을 결정하도록하는 것이 좋습니다.

하지만 이것을 절대적으로 구현해야하는 경우 해결 방법 중 하나는 implement a custom handler to change your real item name이고 항목 표시 이름은 원래 형식으로 유지됩니다.

희망이 도움이됩니다.

+0

그는 항목 이름이 아니라 호스트 이름에 대해 이야기하고 있습니다. 그러나 나는 일반적으로 그 기사에 동의하지만 사람들이 표시 이름 필드를 사용하여 지역화 된 URL을 사용하고자 할 때 다중 언어 사이트에서 항상 가능한 것은 아닙니다. – jammykam

+0

커스텀 핸들러는 우리가 찾고 있던 핸들러입니다. 고맙습니다! –

2

Sitecore의 어떤 버전과 빌드를 사용하고 있습니까?

난 그냥 Sitecore.KernelSitecore.Links.LinkProvider을 통해 살펴 보았다하고 혼자 호스트 이름을 남겨 두어야하므로 BuildItemUrl 메소드는 URL의 경로 부분에 문자 을 대체합니다.

나는 그와 반대가 일어나기를 기대하며, Sitecore.Pipelines.HttpRequest.SiteResolver을 보면 요청 된 Uri를 정의 된 사이트와 일치시켜 SiteContext를 확인합니다. 더 아래로 과정 Sitecore.Pipelines.HttpRequest.ItemResolver 항목 URL을 디코딩하지만 사이트는 이미이 단계에서 해결되었습니다.

<site> 요소에 hostName 속성을 설정했다고 가정합니다. targetHostName 속성을 설정해 보셨습니까?

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

내 로컬 컴퓨터에 문제를 복제 시도하지만이 일이 예상대로 : 당신이 말하고있는 것은 사실 인 경우 여러 호스트 이름을 설정 시도, 나는 그것이 공백이 있지만 가치 시도와 함께 작동하도록 기대하지 않습니다 나를 위해 ... 당신이 아주 이상한 캐릭터 세트로 작업하지 않는 한, 이것은 여전히 ​​내 생각에 이름을 인코딩하는 가장 좋은 방법이다.

+0

두 가지를 바꿀 것입니다. (하이픈이있는 공간) (하이픈으로 밑줄) 밑줄 (_)이 하이픈 (-)으로 바뀌지 만 404로 리디렉션되는 경우 어떤 생각입니까? –

+0

@GauravAgarwal 문제는 항목을 확인할 때 수신에 역순으로 적용된 것입니다. 두 개의 대체가 모두 "-"로 매핑되었으므로 처음에는 "-"를 공백으로 대체하려고 시도하기 때문에 실패합니다. 그러나 하이픈 중 일부는 밑줄이어야하지만 어느 것이 어느 것이어야하는지 전혀 모릅니다. 이벤트 처리기를 사용하여 우선 처리하는 것이 좋습니다. 다음 며칠간 아이템 이름 지정에 대한 블로그 게시물을 작성해두면 도움이 될 것입니다. – jammykam

+0

예 이벤트 처리기는 좋은 생각이지만 가능하면이 방법을 사용하고 싶습니다. '$', = "$"replaceWith = "-"/> replace mode = "on"find = ""replaceWith = "-"/> 둘 다 작동하지만 밑줄 만 문제가 발생합니다. –