2013-04-16 1 views
5

이 질문은 예제에서 가장 효과적입니다.IIS를 사용하여 URL에서 추가 슬래시를 리디렉션하는 방법

슬래시 계속되는 누락 된 경우 IIS가 리디렉션, 내 웹 응용 프로그램은 http://example.com/WebApp/

According to Microsoft에서 호스팅되는 말. 그리고 이것은 예상대로 작동합니다 : http://example.com/WebApp에게 보낸 요청은 http://example.com/WebApp/으로 리디렉션됩니다.

이제 내 경우 누군가가 엑스트라 슬래시 : http://example.com/WebApp//으로 북마크했습니다. 이렇게하면 예상대로 웹 응용 프로그램이로드되지만 이제는 모든 상대 URL이 잘못되었습니다. 따라서 동일한 도메인에서 다른 앱 (예 : ../AnotherApp/SomePage.aspx)을 호출하면 /AnotherApp/SomePage.aspx을 올바르게로드하는 대신 /WebApp/AnotherApp/SomePage.aspx을로드하려고 시도합니다.

http://example.com/WebApp//http://example.com/WebApp/으로 어떻게 리디렉션 할 수 있습니까?

+0

이 말을 듣지 않으면 ... 지금 당장 시험 할 수 없으므로 확실하게 작동 할 것입니다. 그러나 URL로드가 일치하지 않으면 Request.Url을 확인한 다음 페이지로 사용자를 리디렉션하는 코드를 페이지로드 이벤트에 추가 할 수 있습니다. 시도해 봤어? –

+0

@DanielCook이 시점에서 Request 객체는'/ WebApp/Default.aspx'라고하므로 너무 늦습니다. – styfle

+0

[중복 슬래시 여러 개 제거] (http://stackoverflow.com/questions/12004223/remove-multiple-forward-slashes) – dana

답변

0

IIS 재 작성 모듈 (http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rule_Pattern)을 단일 슬래시 버전으로 리디렉션되는 정규식과 함께 사용할 수 있습니다.

예를 들어,이 정규식으로 URL의 추가 슬래시와 일치 할 수

http://.*/{2,}

+0

나는 이것을 시도했지만 제대로 작동하지 못했습니다. 참고로 다음과 같이 시도했습니다. dana

+0

어디서 Web.config에 추가합니까? – styfle

+1

system.webServer-> rewrite-> rules-> rule –

1

이 형 서버 측 스크립트를 사용하여이 작업을 수행하기 어려운 나타납니다. 아마도 자바 스크립트에서 리디렉션을하면 충분할까요?

<html> 
<head> 
<script type="text/javascript"> 
(function() { 
    var protocol = location.href.substr(0, location.href.indexOf("://")); 
    var restOfUrl = location.href.substr(location.href.indexOf("://") + "://".length); 
    if (restOfUrl.match(/\/\//)) { 
     location.href = protocol + "://" + restOfUrl.replace(/\/\//g, "/"); 
    } 
})(); 
</script> 
</head> 
<body> 
... 
</body> 
</html> 

또한, 그래서 검색 엔진의 색인 것을 올바르게 페이지에 canonical link을 설정하는 것이 좋습니다.

+0

이 솔루션을 피하려고했습니다. 아무도 더 나은 대답을 찾지 못하면이 것을 받아 들일 것입니다. – styfle

+0

서버에서 2 개의 슬래시를 읽는 데 어려움을 겪었으므로이 방법을 사용했습니다. 흥미롭게도 여기에 거의 같은 질문이 있습니다 - http://stackoverflow.com/questions/12004223/remove-multiple-forward-slashes. 승인 된 응답에서 Global.asax.cs 내에서 서버 변수를 읽습니다. 그것이 작동하는지 확실하지 않지만, 그 가치가있다. – dana

+0

방금 ​​테스트했는데 이중 슬래시가 UNENCODED_URL 서버 변수에 있습니다. 이를 확인하고 그에 따라 리디렉션 할 수 있습니다. – dana

관련 문제