문제

사용 중입니다 http://urlrewriter.net/ 내 웹 사이트에서 URL을 다시 작성하려면 예를 들어, 다시 작성하고 있습니다.

http://www.example.com/schedule.aspx?state=ca

에게

http://www.example.com/california.aspx

메타 태그를 동적으로 추가하기 위해 (SEO 목적으로) 내가하려는 일 :

<meta name="robots" content="noindex,follow" />

다시 작성되지 않은 페이지에. 이것은 두 URL이 모두 작동하기를 원하지만 검색 엔진에서 다시 작성한 것만으로 작성되기 때문입니다.

요청 된 페이지의 버전을 어떻게 결정합니까?

편집하다

아래의 답변은 메타 태그를 사용하는 대신 301 리디렉션을 제안합니다. 어쩌면 나는 이것을 할 것입니다. 그러나 나는 여전히 근본적인 질문에 대한 답을 알고 싶습니다 ... 페이지가 다시 작성되었는지 어떻게 알 수 있습니까?

도움이 되었습니까?

해결책

개인적으로, 나는 UN-Lewritten에서 재 작성 된 것을 301로 리디렉션하고 페이지의 단일 사본 만 사용합니다. 사용자가 더 쉽고 SEO 관점에서 컨텐츠 사본 1 개가 있습니다.

다른 팁

이 작업을 수행 해야하는 경우 다음과 같은 작업을 수행 할 수 있습니다.

<add header="X-WasRewritten" value="true" />

또한 시야에서 헤더를 확인하고 필요한 경우 로봇 메타 태그를 추가 할 수 있습니다.

이것은 클라이언트에게도 반환되므로 숨기려면 사용자 정의를 작성할 수 있습니다 (http://urlrewriter.net/index.php/support/reference/actions/custom-action) 요청에 어떤 종류의 상태 값을 설정합니다.

그러나 동일한 자원에 대해 두 개의 URI가있는 것은 권장하지 않는 것입니다. 하나의 표현을 유지하는 것이 좋습니다. 오래된 북마크를 무효화하는 것에 대해 걱정된다면 이전 책갈피를 새 것으로 리디렉션하도록 설정할 수 있습니다.

Chakrit의 답변에 따라 Urlrewriter.net은 httpcontext에 원래 URL을 저장하는 것처럼 보입니다. urlrewriter.net.rawurl. 따라서 다음과 같은 것을 시도 할 수 있습니다.

bool isPageRewritten = 
   !string.IsNullOrEmpty(HttpContext.Current.Items["UrlRewriter.NET.RawUrl"]);

가장 명백한 방법은 페이지의 request.url 객체를 사용하여 URL 및 쿼리 문자열에 대한 정보를 얻는 것입니다. 예를 들어:

if (Path.GetFileName(Request.Url.FilePath) == "schedule.aspx")
   //Not rewritten
else
   //rewritten

그게 그 일이라고 생각합니다 httpcontext.current.items.

httpcontext.current.items에 "리디렉션"을 저장 한 다음 페이지에서 특정 부가 가치를 확인할 수 있습니다.

나는 당신이 그것을 할 수있는 urlrewriter.net에 고리를 추가 할 수 있다고 생각합니다.

HttpContext.Current.Items["Redirected_From"] = currentUrlHere;

그런 다음 웹 페이지에서 다음과 같이 확인할 수 있습니다.

if (!string.IsNullOrEmpty(HttpContext.Current.Items["Redirected_From"]))
    // the page's been redirected, do something!
else
    // no it's visited normally.

.NET 3.5 SP1의 ASP.NET 라우팅 프레임 워크를 위해 오랫동안 남겨 두었습니다. urlrewriter.net IMO보다 낫습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top