단일 웹 사이트가 domain.com에 바인딩되어 있고 domain.com/app1, domain.com/app2 등으로 액세스되는 여러 IIS 응용 프로그램이 포함 된 IIS 8.5 설치 프로그램이 있습니다.IIS 응용 프로그램에 대해 URL 다시 쓰기 규칙을 올바르게 적용하는 방법
이러한 응용 프로그램은 각각 동일한 물리적 경로를 가리키며 모두 web.config를 공유합니다. 이것은 특정 CMS 구성입니다.
각 응용 프로그램이 공유하는 web.config에 일반적인 URL 다시 쓰기 규칙 (HTTPS로 리디렉션, 소문자 사용, 후행 슬래시 추가 등)을 적용했지만 이러한 규칙은 응용 프로그램 이름 뒤에있는 URL에만 적용됩니다. 나는이 규칙은 표준 규칙이 URL 재 작성 GUI를 사용하여 추가 할 수 있습니다
<rewrite>
<rules>
<rule name="Enforce lowercase" stopProcessing="true">
<match url="[A-Z]" ignoreCase="false" />
<action type="Redirect" url="{ToLower:{URL}}" redirectType="Permanent" />
</rule>
<rule name="Add trailing slash" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}/" redirectType="Permanent" />
</rule>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
따라서, 예를 들어, http://domain.com/APP1/PATH
는 https://domain.com/APP1/path/
로 리디렉션합니다. 또한 https://domain.com/app1
은https://domain.com/app1/
으로 리디렉션되지 않습니다.
HTTPS 규칙은 괜찮지 만 특정 URL (app1, app2 등)을 처리해야한다는 것을 염두에두고 전체 URL에서 작동하도록 다른 2 가지 규칙을 어떻게 구성 할 수 있는지 내게 알려줄 수 있습니다. 일반적으로.
UPDATE 내 요구에 충분
내가 (서버 수준에서) IIS에서 전역 규칙을 사용하여 소문자 URL을 적용 할 수 있음을 발견했습니다. 그러나 후행 슬래시 추가/제거에 대한 웹 사이트 수준 규칙을 복제하는 것은 불가능한 것 같습니다.
죄송합니다.이 경우 규칙이 실행되지 않기 때문에 루트 URL (예 : https://domain.com/app1)에 후행 슬래시를 추가하면 도움이되지 않습니다. – getsetcode
이것은 내 웹 사이트에서 사용하는 규칙입니다. 왜 저에게 효과가 있고 왜 효과가 없을지 잘 모르겠습니다. 어쩌면 다른 규칙에 방해가되는 것입니까? – Henry
다시 테스트하면 해당 규칙이 상대 경로에서만 작동하므로 domain.com을 domain.com/ (또는 내 경우 domain.com/app/domain.com/app)로 리디렉션하지 않습니다./응용 프로그램이 IIS 응용 프로그램이기 때문에 /) – getsetcode