如何使用 IIS 重写模块删除 url 中的锚点?
How to remove an anchor in a url with IIS rewrite module?
我有这个 url https://example.com/test/#/anchorpart1/anchorpart2 and I want to do a redirect to https://example.com/test2.
到目前为止,我创建了以下规则:
<rule name="Redirect" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="https://example.com/test2" appendQueryString="false" redirectType="Permanent" />
</rule>
这将导致以下结果:
https://example.com/test2#/anchorpart1/anchorpart2
如何删除“#/anchorpart1/anchorpart2”,使其只有“https://example.com/test2”,也许是通过使用匹配或条件规则?
根据 HTTP 规范,#(片段)之后的 URL 部分永远不会传递到服务器,因此,URL 重写不会看到它。
要解决此问题,您可以部署一个静态 HTML 页面来处理重定向请求,如下例所示:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0;url=https://example.com/test2">
</head>
<body>
<script language="javascript">
window.location.href = "https://example.com/test2"
</script>
</body>
</html>
通过使用以下解决方案,您将能够转义传入请求的#(片段)URL 并将其重定向。
我有这个 url https://example.com/test/#/anchorpart1/anchorpart2 and I want to do a redirect to https://example.com/test2.
到目前为止,我创建了以下规则:
<rule name="Redirect" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="https://example.com/test2" appendQueryString="false" redirectType="Permanent" />
</rule>
这将导致以下结果:
https://example.com/test2#/anchorpart1/anchorpart2
如何删除“#/anchorpart1/anchorpart2”,使其只有“https://example.com/test2”,也许是通过使用匹配或条件规则?
根据 HTTP 规范,#(片段)之后的 URL 部分永远不会传递到服务器,因此,URL 重写不会看到它。
要解决此问题,您可以部署一个静态 HTML 页面来处理重定向请求,如下例所示:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0;url=https://example.com/test2">
</head>
<body>
<script language="javascript">
window.location.href = "https://example.com/test2"
</script>
</body>
</html>
通过使用以下解决方案,您将能够转义传入请求的#(片段)URL 并将其重定向。