2010-01-04 1 views
3

내 웹 사이트에 두 개의 별도 인터페이스 (실버 라이트)와 실버 라이트 (Silverlight)가없는 사람들을위한 일반 HTML 및 검색 엔진을 갖고 싶습니다. 그들은 정확히 똑같은 콘텐츠를 가지게 될 것이고 Silverlight는 더 풍부한 경험 일 것입니다.URL에 '#'표시없이 실버 라이트 딥 링크를 처리 할 수있는 방법이 있습니까?

Silverlight를 사용하는 사람이 URL을 특정 페이지에 복사하면 '#'이 표시됩니다 (app # page1). 그런 다음 블로그 또는 해당 페이지의 해당 페이지에 연결하려는 경우 #이 표시되며 검색 엔진은이를 app # page2와는 별개의 페이지로 간주하지 않습니다.

Silverlight에서 내비게이션을 만드는 방법은 실제로 별도의 페이지를로드하지 않고 '#'대신 '/'를 사용하여 URL을 업데이트합니까? 이렇게하면 검색 주소창의 URL이 일반 웹 사이트 URL ('app/page1', 'app/page2')처럼 표시됩니다.

답변

5

Silverlight에서 내비게이션을 만드는 방법은 실제로 별도의 페이지를로드하지 않고 '#'대신 '/'를 사용하여 URL을 업데이트합니까? 이렇게하면 검색 주소창의 URL이 일반 웹 사이트 URL ('app/page1', 'app/page2')처럼 표시됩니다.

불행히도, 아니오. Silverlight 탐색 URL에서 #을 사용하는 이유는 앵커 위치로 이동하여 내에 내에서 이동할 수 있기 때문입니다. '/'구분 기호가있는 전체 URL을 사용하면 브라우저가 새 페이지로 이동하게되어 Silverlight 응용 프로그램이 다시로드됩니다. 기본적으로 Silverlight 응용 프로그램을 언로드하고 새 URL로 새 응용 프로그램을로드합니다.

+0

Silverlight 응용 프로그램이 MVC 사이트에서 호스팅되고 사용자가 로그인해야하는 솔루션이 있습니까? 사용자에게 딥 링크 (# 포함)를 제공하면 단편이 서버 측으로 전송되지 않으므로 사용자는 해당 링크로 리디렉션되지 않습니다. –

1

# 기호를 사용하는 이유는 브라우저에서 페이지의 위치로 이동하는 것으로 해석되기 때문입니다. 그렇지 않으면 페이지가 다시로드됩니다.

검색 엔진에 미치는 영향에 대해서는 어느 쪽이든 확실하지 않습니다. 어쩌면 SEO에 대해 더 많은 경험을 가진 사람이 그 일에 의견을 말할 수 있습니다.

그러나 나는 당신이 찾고있는 행동을 얻을 수있을 것이라고 확신하지만, 끝까지 약간의 교묘함이 필요할 수 있습니다. Silverlight 클라이언트 런타임에 정보를 전달하는 또 다른 방법은 쿼리 문자열 매개 변수를 사용하는 것입니다. 쿼리 문자열 매개 변수는 System.Windows.Browser.HtmlPage.Document.QueryString 컬렉션을 사용하여 액세스 할 수 있습니다. 그런 다음 해당 매개 변수를 기반으로 원하는 콘텐츠로 Page 또는 User 컨트롤을로드 할 수 있습니다.

'/'를 사용하여 폴더 구조를 모방하는 한. 사용자 지정 웹 서버 설정/HTTPModules을 사용하여이 작업을 수행 할 수있는 방법이 있다는 것을 알고 있습니다. 나는 오클라호마에서이로 보일 것이다, 당신은 IIS/ASP.Net을 사용하는 가정

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

는 해커의 조금 필요하지만, 당신이 정말로 그 일을 설정하는 경우 난 당신이 확신 할 수 있었다. 또한 세션 중에 동일한 논리를 사용하려고 시도하면 위의 포스터에서 언급 한 사항에 직면하게됩니다. 이것은 당신이 찾고있는 딥 링크 측면에 대해서만 작용할 수 있습니다.