如何解决WordPress固定链接(Permalinks)的语言参数异常问题?
WordPress 固定链接自动转换带查询参数URL的解决方案
问题根源
这种情况一般是WordPress的永久链接重写规则,或是你使用的语言切换插件(如Polylang、WPML)的URL美化功能导致的——这类设置会自动将?lang=en这类查询参数形式的链接,转换为路径式的/lang/en结构。
具体解决方法
1. 调整语言插件的URL设置
如果使用了语言类插件,找到对应设置修改:
- Polylang:进入
设置 → 语言 → URL设置,选择**「使用查询参数」**,取消「语言代码作为目录名」选项,保存后刷新固定链接设置。 - WPML:进入
WPML → 语言 → 语言URL格式,选择**「添加语言参数到URL」**,而非「在目录中添加语言代码」,保存后更新固定链接。
2. 自定义重写规则阻止转换
若插件设置无效,可通过主题functions.php添加代码,阻止lang参数被重写:
function disable_lang_param_rewrite($rules) { foreach($rules as $key => $rule) { if(strpos($key, 'lang=') !== false) { unset($rules[$key]); } } return $rules; } add_filter('rewrite_rules_array', 'disable_lang_param_rewrite');
添加完成后,进入设置 → 固定链接,点击「保存更改」刷新重写规则。
3. 手动插入原始HTML链接
编辑内容时,不要直接输入纯URL让WordPress自动转换,切换到编辑器的文本模式,手动插入原始HTML代码:
<a href="https://example.com/?lang=en" rel="nofollow noreferrer">https://example.com/?lang=en</a>
避免可视化编辑器自动格式化链接结构。
4. 检查服务器重写规则
如果服务器用Apache,检查网站根目录的.htaccess文件,查看是否存在将?lang=en转换为路径形式的自定义规则,删除对应规则后保存,再刷新固定链接设置。
内容的提问来源于stack exchange,提问作者Valentyn Volynskyi
相关产品推荐
相关产品推荐

