Power Pages切换语言时出错:查询字符串被错误URL编码
Power Pages语言切换器编码查询字符串致ASP.NET错误的解决办法
自定义语言切换器链接逻辑
默认语言切换器会把整个URL(包括问号和参数)全编码,直接用Liquid写自定义切换链接就能解决:
{% assign current_full_url = page.url | append: request.query_string %} {% for lang in site.languages %} {% if lang.code != site.current_language.code %} <a href="{{ site.baseurl }}/{{ lang.code }}{{ current_full_url }}">{{ lang.name }}</a> {% endif %} {% endfor %}
这段代码直接拼接当前页面路径、原始查询串和目标语言代码,不会乱编码问号这类特殊字符。
调整站点设置
检查并修改以下站点设置:
- 找到
Website > SEO > Encode URLs,设为false,关闭全站URL强制编码 - 确认
Portal > Language > Preserve Query String设为true,保证切换语言时保留查询参数
用JS修正编码后的URL
如果不想改Liquid,加一段前端JS也能快速修复:
document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.language-switcher a').forEach(link => { link.onclick = () => { link.href = link.href.replace('%3F', '?').replace('%3D', '='); }; }); });
它会把被错误编码的%3F(问号)和%3D(等号)替换回原始字符,让ASP.NET能正常解析参数。
额外排查建议
- 把Power Pages更新到最新版本,排查是否是旧版本的已知bug
- 检查有没有自定义URL重写规则干扰了语言切换后的URL解析
内容的提问来源于stack exchange,提问作者Paul Lucas
相关产品推荐
相关产品推荐

