Sitecore-NextJS:如何将带查询字符串的页面重定向为无查询字符串格式?
在Sitecore中实现URL重定向的方案
前提条件
- 确保你的IIS服务器已安装URL Rewrite模块(这是实现该重写的基础组件)
实现步骤(通过IIS URL Rewrite配置)
1. 直接在IIS管理器中创建重写规则
打开IIS管理器,定位到你的Sitecore站点,点击URL Rewrite功能:
- 点击右侧
添加规则,选择空白规则 - 配置规则细节:
- 名称:自定义命名,比如
Redirect MyPage with ID to Friendly URL - 匹配URL:
- 请求路径:选择
Matches the Pattern - 模式:
^MyPage$(限定仅匹配MyPage这个页面路径) - 忽略大小写:勾选
- 请求路径:选择
- 条件:
- 逻辑关系选择
Match Any(两种参数场景都需要匹配),添加两个条件:- 输入:
{QUERY_STRING},匹配模式:^id=([^&]+)$(匹配仅含id参数的URL) - 输入:
{QUERY_STRING},匹配模式:^.*id=([^&]+).*$(匹配包含id和其他参数的URL,比如带name的场景)
- 所有条件的
忽略大小写都勾选
- 输入:
- 逻辑关系选择
- 操作:
- 操作类型:
Redirect - 重定向URL:
http://server/MyPage/{R:1}({R:1}对应条件中捕获的id值) - 重定向类型:选择
永久(301)(利于SEO,临时跳转可选临时(302)) - 取消勾选
追加查询字符串(需要去掉原查询参数) - 勾选
重定向时停止处理后续规则
- 操作类型:
- 名称:自定义命名,比如
2. 直接修改web.config配置(适合批量部署)
如果不想通过IIS界面操作,可直接在Sitecore站点的web.config中找到<rewrite>节点(无则创建),添加以下规则代码:
<rewrite> <rules> <rule name="Redirect MyPage ID to Friendly URL" stopProcessing="true"> <match url="^MyPage$" ignoreCase="true" /> <conditions logicalGrouping="MatchAny"> <add input="{QUERY_STRING}" pattern="^id=([^&]+)$" ignoreCase="true" /> <add input="{QUERY_STRING}" pattern="^.*id=([^&]+).*$" ignoreCase="true" /> </conditions> <action type="Redirect" url="http://server/MyPage/{R:1}" appendQueryString="false" redirectType="Permanent" /> </rule> </rules> </rewrite>
注意事项
- 替换规则中的
http://server为你的实际站点域名或服务器地址 - 若站点使用SSL协议,需将重定向URL的协议改为
https:// - 测试前清除浏览器缓存,避免旧缓存干扰结果
- 规则通过
^MyPage$限定了匹配范围,不会影响Sitecore其他页面的正常访问
内容的提问来源于stack exchange,提问作者Anthony Fernandes
相关产品推荐
相关产品推荐

