WordPress多语言页面URL重写配置问题:带语言前缀路径如何指向原页面
WordPress多语言站点URL前缀重写解决方案
现有配置错误点
你当前的RewriteRule存在两处核心错误:
- 捕获组引用错误:规则中第一个捕获组
$1匹配的是en/hn/ta语言标识,你需要取第二个捕获组$2才是路径部分 - 标志使用错误:
P(代理转发)标志完全不必要,会额外增加服务器开销,甚至可能触发权限限制
修正后的完整.htaccess配置
RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] # 多语言前缀内部重写规则 RewriteRule ^(en|hn|ta)/(.*)$ /$2 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
规则说明
- 内部重写不会改变地址栏URL,用户访问
http://website-url/en/home时地址栏保持不变,实际返回的是http://website-url/home的内容,完全匹配你的需求 QSA标志会保留原URL携带的查询参数,比如/en/home?uid=123会正确重写到/home?uid=123- 规则放在WordPress默认伪静态规则之前,确保语言前缀先被处理,再进入WordPress的路由逻辑
注意事项
- 修改配置后请用浏览器无痕模式测试,避免本地缓存干扰结果
- 如果后续需要实现不同前缀对应不同语言的内容,可直接使用Polylang、WPML等WordPress多语言插件,插件会自动处理URL重写逻辑,无需手动修改.htaccess
内容的提问来源于stack exchange,提问作者SowriSurya
相关产品推荐
相关产品推荐

