如何为Sitefinity Cloud配置URL重写?旧资产跳转失败求助
解决资产URL重定向到ww2子域名的问题
先梳理你之前两次尝试的问题,再给出可行的重写规则:
之前尝试的问题分析
- 尝试1:IIS重写规则的
<match url>匹配的是域名之后的路径部分,不包含域名本身,所以^.*\.gov/asset.*$这个模式永远不会命中。另外就算匹配成功,{R:0}会把整个匹配内容拼到ww2域名后,导致URL变成https://ww2.sitename.gov/www.sitename.gov/asset...,完全不符合需求。 - 尝试2:
^asset(.*)$的匹配会把路径开头的asset去掉,比如asset12345.aspx会被重定向到ww2.sitename.gov/12345.aspx,丢失了关键的asset前缀;同时这个规则只覆盖了小写asset开头的路径,没包含大写Assets/开头的子目录情况。
可行的重写规则
下面的规则能覆盖你提到的三类资产格式,并且正确完成从www到ww2的重定向:
<rewrite> <rules> <rule name="Redirect Asset URLs to ww2" stopProcessing="true"> <!-- 匹配所有以asset(大小写不限)开头的路径,包括Assets子目录 --> <match url="^(asset.*|Assets/.*)$" ignoreCase="true" /> <!-- 仅当请求来自www.sitename.gov时触发 --> <conditions> <add input="{HTTP_HOST}" pattern="^www\.sitename\.gov$" /> </conditions> <!-- 重定向到ww2子域名,保留完整路径和查询字符串 --> <action type="Redirect" url="https://ww2.sitename.gov/{R:0}" appendQueryString="true" redirectType="Permanent" /> </rule> </rules> </rewrite>
关键说明
^(asset.*|Assets/.*)$:用正则分支覆盖两种开头的路径,ignoreCase="true"确保大小写都能匹配(比如Asset123.aspx也能命中)。{R:0}:代表整个匹配到的路径内容,比如asset12345.aspx或Assets/sub-dir/file.pdf,能完整保留原路径拼到ww2域名后。appendQueryString="true":如果原URL带查询参数(比如assetfactory=1234.aspx?param=1),会自动追加到重定向后的URL中。redirectType="Permanent":返回301永久重定向,利于搜索引擎收录更新。
额外检查项
- 确保你的IIS服务器已经安装了URL Rewrite模块,没有的话需要先安装。
- 把这个规则放在所有其他重写规则的最前面,避免被其他规则拦截。
- 测试时可以用浏览器的开发者工具查看网络请求,确认返回的是301状态码,且跳转目标URL正确。
内容的提问来源于stack exchange,提问作者Millhorn
相关产品推荐
相关产品推荐

