2010-11-22 3 views
1

web.config의 다시 쓰기 규칙을 사용하여 www.example.com/section/index.aspx에서 www.example.com/section으로 리디렉션하는 방법은 무엇입니까? www.example.com/parent/child와 같은 다양한 수준에서도 작동해야합니다.web.config를 사용하여 URL에서 index.aspx를 제거하려면 어떻게합니까?

* 서버에 액세스 할 수 없다는 점을 유의하십시오. 기본적으로 web.config 파일을 편집하고 서버에 응용 프로그램을 다시 작성하라고 지시 할 수 있습니다.

+2

로 끝나는, 어떤 어떤 URL이 설치 한 모듈을 다시 작성하는 경우? 예를 들어 IIS 7 URL 다시 쓰기 모듈을 사용하고 있습니까? –

+0

은 제거해야하는 모든 디렉토리에서 index.aspx입니까? ASP.NET 용 MVC를 사용해 보셨습니까? –

+1

@Justin C : 간단한 HTTPModule 수정이 될 수있는 응용 프로그램의 주요 변경 사항입니다.) –

답변

4

가장 좋은 방법은 IIS7 URL Rewrite Module을 사용하는 것이지만 서버에 설치해야합니다. 동시에 사용하기가 쉽고 강력합니다. 기본적으로 설치되지는 않지만 Microsoft에서 제공하는 것으로 자주 사용되기 때문에 호스팅 된 경우 이미 설치되어있을 수 있습니다. 당신은 2.0 asp.net의 이상에 경우

, 당신은 Web.config의에 urlMappings 섹션을 추가 할 수 있습니다

<system.web> 
    <urlMappings enabled="true"> 
     <add url="~/Section" mappedUrl="~/Section/index.aspx"/> 
    </arlMappings> 
</system.web> 

그러나 이것은 몇 가지 문제가있다 : 첫째, URL은 ISN을 요청하는 경우 ' ASP.Net 모듈에서 처리했거나 응용 프로그램에 전달되지 않은 경우 다시 작성하지 않습니다. 예를 들어, ".aspx"파일을 누르지 않아 발생할 수 있습니다. 또한 일부 구성에서는 사용자가 요청한 파일이 있어야합니다. 또 다른 문제는 지원되는 와일드 카드 규칙이 없기 때문에 규칙을 추가하여 가능한 모든 경로를 개별적으로 다시 작성해야한다는 것입니다.

마지막으로 asp.net은 bin 디렉토리에 놓고 web.config에 추가 할 수있는 httpmodules을 다시 작성합니다. url rewriting에 대한 ScottGu의 몇 가지 (기한이 지났을 수도있는) 옵션이 있습니다.

0

이것은 아마도 엄청나게 구역질이 나겠지만 각 가능한 수준에 대한 규칙을 작성하여 url에서 index.aspx를 삭제하는 모든 경로를 다시 작성할 수있었습니다.

<rule name="Migrate to PHP"> 
<match url="^([_0-9a-z-]+).aspx"/> 
<action type="Redirect" redirectType="Permanent" url="/"/> 
</rule> 

시작하여 당신이 사용중인 IIS의 버전을 확인할 수 있습니다

<rule name="Migrate to PHP all the way"> 
<match url="^([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+).aspx"/> 
<action type="Redirect" redirectType="Permanent" url="{R:1}/{R:2}/{R:3}/{R:4}"/> 
</rule> 
관련 문제