.NET 6中如何将无语言码URL重定向到带语言码URL?
解决方案
你需要使用负向前瞻断言来排除已带有语言前缀的URL,仅匹配无语言前缀的/product/{permalink}格式路径,对应的正则表达式和完整代码如下:
正确的重定向规则
var rewriteOptions = new RewriteOptions() // 匹配无语言前缀的/product/开头URL,重定向到/en/product/路径 .AddRedirect(@"^(?!/(de|fr|es)/)product/(.*)", @"en/product/$2", statusCode: 301); app.UseRewriter(rewriteOptions);
正则表达式说明
^(?!/(de|fr|es)/):负向前瞻断言,确保URL开头不是/de/、/fr/或/es/这类语言前缀路径product/(.*):匹配/product/后的所有内容(即你的{permalink}部分),并将其捕获为分组$2- 重定向目标
en/product/$2:把捕获到的{permalink}拼接到/en/product/后,完成路径转换
补充说明
- 用
301永久重定向更利于SEO需求,若需临时重定向可改为302 - C#里的
@是逐字字符串标记,避免斜杠等特殊字符的转义问题
内容的提问来源于stack exchange,提问作者Mehdi
相关产品推荐
相关产品推荐

