web.config配置<rewrite>重定向规则不生效 无法实现articles路径跳转
现有规则存在的问题
- 路径匹配未捕获
articles后的剩余路径:当前match url="articles"仅判断路径包含articles字符串,没有提取articles之后的路径部分,导致跳转后无法拼接对应子路径 - 域名匹配规则不完整:条件中的
pattern="^testsite.co.uk$"仅匹配不带www的主域名,无法匹配示例中带www的www.testsite.co.uk域名 - 跳转配置不符合需求:
- action中硬编码了
http协议,会将原https访问强制跳转到http,和预期的https跳转不符 - 跳转目标路径没有拼接捕获到的子路径,所有匹配请求只会跳转到
/about-park/blog/根路径 - 关闭了
appendQueryString,如果原路径带查询参数会丢失,若有保留参数需求需要开启
- action中硬编码了
调整后可实现需求的规则
<rule name="Redirect Articles" enabled="true" stopProcessing="true"> <match url="^articles/(.*)$" /> <conditions> <add input="{HTTP_HOST}" pattern="^(www\.)?testsite\.co\.uk$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/about-park/blog/{R:1}" appendQueryString="true" redirectType="301" /> </rule>
调整说明
match url="^articles/(.*)$":仅匹配路径开头为articles/的请求,同时用括号捕获articles/之后的所有内容,存到变量{R:1}中- 域名匹配规则调整为
^(www\.)?testsite\.co\.uk$,同时兼容带www和不带www的域名 - 跳转协议改为https,目标路径末尾拼接
{R:1}将捕获的子路径带上,实现对应路径跳转 - 开启
appendQueryString保留原请求的查询参数,不需要可以改回false - 新增
redirectType="301"设置为永久重定向,有利于SEO,如果是临时调试可以改为302
内容的提问来源于stack exchange,提问作者Owais Ahmed
相关产品推荐
相关产品推荐

