IIS URL 重写规则 - 测试有效但没有结果
IIS URL Rewrite rule - test works but no results
我在为 IIS 8.5 编写 URL 重写规则时遇到问题。我编写规则的专业知识勉强中等,文档也没有帮助。
我正在尝试重定向以下 URL:
主机名。com/sub1/sub2/sub3/sub4
到这个URL:
主机名。com/sub1/sub6/sub7/sub2/sub4
我的意思是——
- hostname.com 是一个变量。此单个 .NET 应用程序提供多个主机名。
- sub1 保持不变,不是变量。
- sub2 是应该触发模式的 sub,但不是
一个变量,但是它被移动到 URL 中的不同位置。
- 鉴于前两点,我假设字符串‘sub1/sub2’
应该硬编码到模式中以识别 URLs
转换并避免重定向循环。
- sub3 被删除。
- sub4 是一个变量。
- sub6 和 sub7 不是变量。
我知道我错误地使用了术语变量 - 我所说的变量是指 URL 的那些部分发生了变化,需要被捕获并用作反向引用。
让我用一个例子来说明:
https://hostname.com/application/catalog/v3g5h6j8k9/feline-footwear
至 ->
https://hostname.com/application/showcase/default/catalog/feline-footwear
我写规则的所有尝试都失败了。我确定我做错了。
我以为我已经接近这个了。模式测试全部成功,但它不会接收传入的 URL。我刚收到 404:
<rule name=“Catalog redir” enabled=“true” stopProcessing="true">
<match url=“^(.*)/application/catalog/(.*)/(.*)” />
<action type="Redirect" url=“{R:1}/application/showcase/default/catalog/{R:3}” redirectType="SeeOther" />
</rule>
我也尝试过使用 ([a-zA-Z0-9_+-]+) 而不是 (.*)
此外,我在树的 /application 级别安装了此规则,而不是根。这可能是不正确的吗?或者说得更好一点,规则在网站树中的位置如何与模式相关联?我在文档中也找不到。
提前感谢您的任何建议。
规则在树中的位置,就其格式而言,是个问题。由于它没有放在根目录中,而是放在 /application 中,一旦我去掉了第一部分,因此匹配的开头 url 是 application,它开始工作了。
我在为 IIS 8.5 编写 URL 重写规则时遇到问题。我编写规则的专业知识勉强中等,文档也没有帮助。
我正在尝试重定向以下 URL:
主机名。com/sub1/sub2/sub3/sub4
到这个URL:
主机名。com/sub1/sub6/sub7/sub2/sub4
我的意思是——
- hostname.com 是一个变量。此单个 .NET 应用程序提供多个主机名。
- sub1 保持不变,不是变量。
- sub2 是应该触发模式的 sub,但不是 一个变量,但是它被移动到 URL 中的不同位置。
- 鉴于前两点,我假设字符串‘sub1/sub2’ 应该硬编码到模式中以识别 URLs 转换并避免重定向循环。
- sub3 被删除。
- sub4 是一个变量。
- sub6 和 sub7 不是变量。
我知道我错误地使用了术语变量 - 我所说的变量是指 URL 的那些部分发生了变化,需要被捕获并用作反向引用。
让我用一个例子来说明:
https://hostname.com/application/catalog/v3g5h6j8k9/feline-footwear
至 ->
https://hostname.com/application/showcase/default/catalog/feline-footwear
我写规则的所有尝试都失败了。我确定我做错了。
我以为我已经接近这个了。模式测试全部成功,但它不会接收传入的 URL。我刚收到 404:
<rule name=“Catalog redir” enabled=“true” stopProcessing="true">
<match url=“^(.*)/application/catalog/(.*)/(.*)” />
<action type="Redirect" url=“{R:1}/application/showcase/default/catalog/{R:3}” redirectType="SeeOther" />
</rule>
我也尝试过使用 ([a-zA-Z0-9_+-]+) 而不是 (.*)
此外,我在树的 /application 级别安装了此规则,而不是根。这可能是不正确的吗?或者说得更好一点,规则在网站树中的位置如何与模式相关联?我在文档中也找不到。
提前感谢您的任何建议。
规则在树中的位置,就其格式而言,是个问题。由于它没有放在根目录中,而是放在 /application 中,一旦我去掉了第一部分,因此匹配的开头 url 是 application,它开始工作了。