IIS URL 다시 쓰기 및 Web.config
IIS에 대해 아무것도 이해할 수 없지만 모든 방문자를 다음으로 리디렉션하는 이 문제를 해결하려고 합니다.example.com/page
로.example.com/page.html
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps>
<rewriteMap name="StaticRedirects">
<add key="/page" value="/page.html" />
</rewriteMap>
</rewriteMaps>
</rewrite>
</system.webServer>
</configuration>
몇 가지 문제가 발생합니다.
- 파일을 어디에 두어야 할지도 모르겠습니다.User root 디렉토리와 htdocs 디렉토리가 있습니다. 둘 다 시도해봤지만, 즐겁지 않았습니다.
- 저는 그 계정이 다시 쓸 수 있는지조차 모릅니다, 저는 그것을 알아내려고 노력하고 있습니다.
기존 web.config: 맵 다시 쓰기를 선언했지만 맵을 사용할 규칙을 만들지 않았습니다.RewriteMap은 자체적으로 전혀 작동하지 않습니다.
다음은 이 작업을 수행하는 방법입니다(다시 쓰기 맵을 사용하지 않고 규칙만 사용하며, 적은 양의 다시 쓰기/재연결에 대해서는 문제가 없습니다).
이 규칙은 단일 정확한 다시 쓰기(내부 리디렉션)를 수행합니다./page
로./page.html
브라우저의 URL은 변경되지 않은 채로 유지됩니다.
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRewrite" stopProcessing="true">
<match url="^page$" />
<action type="Rewrite" url="/page.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
이 규칙 #2는 위와 동일하게 수행되지만 브라우저에서 URL이 변경되는 301 리디렉션(영구 리디렉션)을 수행합니다.
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRedirect" stopProcessing="true">
<match url="^page$" />
<action type="Redirect" url="/page.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
규칙 #3은 확장자가 .html인 파일이 있는 경우 임의의 URL에 대해 이러한 다시 쓰기를 실행하려고 시도합니다(예:/page
그것은 확인할 것입니다./page.html
존재하며, 이 경우 다시 쓰기가 발생합니다.):
<system.webServer>
<rewrite>
<rules>
<rule name="DynamicRewrite" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{REQUEST_FILENAME}\.html" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="/{R:1}.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
LazyOne의 답변에서 한 가지 누락된 점을 지적하고 싶을 뿐입니다(답변 아래에 댓글을 달았을 것이지만 담당자가 충분하지 않습니다).
영구 리디렉션 규칙 #2에서 누락된 항목이 있습니다.
redirectType="Permanent"
따라서 규칙 2는 다음과 같습니다.
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRedirect" stopProcessing="true">
<match url="^page$" />
<action type="Redirect" url="/page.html" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
편집
URL Rewrite Module 사용 방법에 대한 자세한 내용은 이 우수한 문서: URL Rewrite Module Configuration Reference를 참조하십시오.
댓글의 @kneidels 질문에 대한 답변; URL을 일치시키려면:topic.php?id=39
다음과 같은 것을 사용할 수 있습니다.
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRedirect" stopProcessing="true">
<match url="^topic.php$" />
<conditions logicalGrouping="MatchAll">
<add input="{QUERY_STRING}" pattern="(?:id)=(\d{2})" />
</conditions>
<action type="Redirect" url="/newpage/{C:1}" appendQueryString="false" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
일치할 것입니다.topic.php?id=ab
어디에a
사이의 숫자입니까?0-9
그리고 b는 또한 사이의 임의의 숫자입니다.0-9
그러면 다음으로 리디렉션됩니다./newpage/xy
어디에xy
원본 URL에서 가져온 것입니다.나는 이것을 테스트하지 않았지만 작동할 것입니다.
방금 이 규칙을 사용해 봤는데 GoDaddy 호스팅과 함께 작동했습니다. 이미 모든 IIS 7 계정에 Microsoft URL 다시 쓰기 모듈이 설치되어 있기 때문입니다.
<rewrite>
<rules>
<rule name="enquiry" stopProcessing="true">
<match url="^enquiry$" />
<action type="Rewrite" url="/Enquiry.aspx" />
</rule>
</rules>
</rewrite>
언급URL : https://stackoverflow.com/questions/4410067/iis-url-rewrite-and-web-config
'programing' 카테고리의 다른 글
숫자 인덱스를 기준으로 data.table의 여러 열 선택 (0) | 2023.06.26 |
---|---|
i가 값 1을 유지하는 int인 "if (i++ & & (i == 1)"가 거짓인 이유는 무엇입니까? (0) | 2023.06.26 |
Springfox @RestController 명명 (0) | 2023.06.26 |
SQL Server를 방해하는 요소를 확인하려면 어떻게 해야 합니까? (0) | 2023.06.26 |
Firebase 사용자의 displayName을 설정하려면 어떻게 해야 합니까? (0) | 2023.06.26 |