문제

일반적인 문제 :

우리는 IIS 웹 서버에 다음과 같이 형식화 된 URL이 있습니다.

http://www.server.com/page.aspx

우리는 또한 이와 같은 URL이 들어오고 있음을보고 있습니다.

http://www.server.com//page.aspx

사용자 에이전트가 Internet Explorer 일 때 2 개의 다른 페이지로 해결되므로 캐시에서 해결해야 할 때 콘텐츠를 두 번 다운로드하기 때문에 추가 경로 문자를 제거하고 싶습니다.

이것이 URL에 라이팅 모듈과 같은 문제로 해결해야 할 문제인지 또는 구성 설정이 있는지 확실하지 않습니다.

도움이 되었습니까?

해결책

문제는 II가 아닌 IE와 관련이 있다고 생각합니다.

URL 재 작성은 일반적으로 URL을 매핑하는 프로세스를 나타냅니다. http://example/shoes/clarkes 에게 http://example/shoes.aspx?maker=clarkes 브라우저가 알지 못하도록 서버에서.

당신이해야 할 일은 브라우저를 리디렉션하는 것입니다. http://www.server.com//page.aspx 에게 http://www.server.com/page.aspx 사용 a 301 HTTP 응답 코드.

이론에 의하면:

ASP.NET을 사용하는 것처럼 보이면 가장 투명한 방법은 다음을 작성하는 것입니다. httpmodule 요청 된 URI에서 이중 슬래시를 확인하고 리디렉션을 수행합니다.

가장 쉬운 방법은 Global.ascx. (CS | VB)에 일부 코드를 넣는 것입니다. Beginrequest.

어느 쪽이든, 검사를 수행하는 코드는 동일합니다.

실제로 :

IIS 또는 ASP.NET은 볼 수있는 기회를 얻기 전에 이중 "/"를 삼키는 것일 수 있습니다. IIS라면 IIS 앞에 프록시를 사용해야 할 수도 있습니다. ASP.NET이라면 ISAPI 확장 그것은 당신을 위해 일을 할 것입니다.

다른 옵션

당신도 할 수 있습니다

  • 대부분의 개별 리소스를 HTML 컨텐츠와 별도로 캐시 할 수 있도록 페이지를 분할하십시오.
  • 추가 슬래시를 넣을 필요가 없다는 사용자에게 교육하십시오.

다른 팁

링크를 수정하십시오!

하드 코딩 또는 스크립트가 생성 된 자신의 사이트에 잘못된 링크가 있기 때문에 이중 슬래시가 표시 될 가능성이 높습니다. 연결하는 대본으로 실수 로이 작업을 수행하는 것은 쉽습니다. http://example.com/ + /page.aspx. 이러한 유형의 연결에주의를 기울이십시오!

IIS는 추가 슬래시를 정리하므로 ASP.NET 코드 또는 httpmodule로 해결할 수 없습니다. 여분의 슬래시는 IIS 로그 파일로 만들지 않습니다. IIS7과 Telnet을 사용하여 테스트했으며 로그 또는 ASP.NET에 추가 슬래시를 얻을 수 없었습니다.

원래 질문에 IE 만 포함되는 이유는 확실하지 않습니다. IE와 FF는 모두 URL에서 추가 슬래시를 허용하고 전송하는 것처럼 보이지만 패킷 스니핑을 사용하여 확인하지 않았습니다.

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