2009-06-29 2 views
2

나는 IIS7 URL 재 작성 모듈을 정말 좋아하고 지금까지 저에게 큰 도움이되었습니다.IIS7 URL 재 작성 모듈 대체

어떻게해야할지 모르겠다. 인코딩 된 공백 (% 20)이있는 URL을 공백이 대시 (-)로 바뀐 URL로 영구적으로 리디렉션하고 싶습니다. .

그래서이 :

http://www.test.com/About%20Our%20Mission.aspx

이로 리디렉션해야합니다

http://www.test.com/About-Our-Mission.aspx

는 정규 표현식 그게 가능합니까?

+0

마지막으로 규칙 집합없이이 문제를 해결 했습니까? 나는 같은 문제를 가지고 해결책을 찾고있다. – jpkeisala

+0

아니요, 쉬운 방법은 없습니다. 나는 대답을 받아 들였다. 패턴 : (\ w +) \ s + (\ w +) \ s + (\ w +) \ s + (\ w +) \ – Stefan

답변

5

원하는대로 직접 할 방법이 없습니다.

같은이 % 20 대 임의의 수에 대한 ISAPI_Rewrite 3 Helicon Ape 하나의 규칙으로 달성 될 수있다
^(.*)%20(.*)%20(.*)%20(.*) replaced by: {R:1}-{R:2}-{R:3}-{R:4} 
^(.*)%20(.*)%20(.*)   replaced by: {R:1}-{R:2}-{R:3} 
^(.*)%20(.*)    replaced by: {R:1}-{R:2} 
+0

바로 지금 당장 가지고있는 것입니다 (% 20은 IIS 재 작성에 의해 공백으로 해석됩니다) + R : 4} 리디렉션 URL : {R : 1} - {R : 3} - {R : 4} 잘 작동하지만 약 % 20Us/Blah와 같은 경로가 있습니다. % 20Dah.aspx. 모든 가능한 공간을 다룰 수있는 모든 규칙이 필요합니다. – Stefan

+1

1이 아니라 2의 제곱으로 카운트 다운하고 이후 규칙을 처리 할 수있는 많은 규칙이 필요하지 않습니다. 예를 들어, 위의 규칙은 16 공백, 8 공백, 4 공백, 2 공백, 1 공백과 같습니다.이 순서대로 사용하면 최대 31 개의 공백을 찾을 수 있으며 대신 5 개의 규칙을 사용합니다 31 규칙의 – jproch

+0

@jproch 좋은 생각. 나는 @ JeremyStein의 답변이 일반적으로 좌절하는 문제에 대한 훌륭한 해결책이라고 생각한다. 당신이 당신의 URL의 길이와 얼마나 많은 '% 20'을 가질 지에 관해 현실적이라면, 구현하기 쉬운 몇 가지 규칙으로 모든 기반을 커버 할 수 있습니다. 그런 다음 사용자 정의 요청 처리기/URL 재 작성자를 작성하는 경로를 유지할 필요가 없습니다. * 유지 보수해야 할 또 다른 * 것이 있습니다. – theyetiman

1

: 다음 좋은의

RewriteBase/
RewriteRule ^(.*)%20(.*)$ $1-$2 [LP,R=301,L] 
2

한 당신은이 같은 정착 할 수

.aspx에 관한 내용은 URL을 실제 코드로 다시 작성하는 것이 얼마나 쉬운지를 설명합니다. 그냥 약간의 검색을 추가하고 웹 사이트의 Global.asax 파일에 코드를 대체 :

<system.webServer> 
    <handlers> 
     <clear/> 
     <add name="Brands1" path="Brands/*.html" verb="*" type="ASP.global_asax" resourceType="Unspecified"/> 
     <add name="Brands2" path="Brands/\?*.html" verb="*" type="ASP.global_asax" resourceType="Unspecified"/> 
     <!-- ... --> 
: IIS7에

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    string path = HttpContext.Current.Request.Path; 
    // Search and replace, RegEx, etc. 
    HttpContext.Current.RewritePath(path); 
} 

, 당신은 비 .ASPX URL을 다시 작성 처리 할 수 ​​Web.config의 일부 항목을 추가해야

IIS7 URL 재 작성 모듈은 훌륭하지만 단지 망치를 가지고 있기 때문에 ...

1

원래 URL로 원하는 조작을 수행 할 수있는 사용자 지정 다시 쓰기 공급자를 작성할 수 있습니다. 그러나 그것은 정규 표현식 이상을 포함합니다. 더 자세한 내용 here.