WPS Hide Login配合TranslatePress多语言站点前缀登录页失效如何解决
问题现象
- 带语言前缀的登录页(如
mydomain.com/fr/login)访问返回404错误:
- 无语言前缀的登录页(
mydomain.com/login)访问正常:
解决方案
该问题由WPS Hide Login插件默认仅匹配根域名下配置的自定义登录路径,未适配TranslatePress生成的带语言前缀URL路由规则导致,可通过以下任意一种方法解决:
方法1:添加兼容代码片段(最推荐)
将以下PHP代码添加到站点当前主题的functions.php文件,或使用Code Snippets类自定义代码插件插入即可:
add_filter('wps_hide_login_should_trigger', function($should_trigger) { $request_uri = $_SERVER['REQUEST_URI']; $login_slug = 'login'; // 此处替换为你自己设置的登录路径后缀 // 匹配所有双字母语言前缀后的登录路径 if (preg_match('#^/[a-z]{2}/' . $login_slug . '/?$#', $request_uri)) { return true; } return $should_trigger; });
代码会自动识别/fr/login、/en/login、/es/login这类带语言前缀的登录路径,匹配WPS Hide Login的登录规则。
方法2:配置TranslatePress URL排除规则
如果你不需要登录页本身被多语言翻译,可进入TranslatePress设置的「高级」选项卡,找到「排除路径」配置项,添加login为排除路径,此时所有带语言前缀的/xx/login请求都会自动跳转至根域名下的/login,无需额外配置多份登录路径。
方法3:服务器层面添加重写规则
如果你不想修改站点代码,也可以直接在服务器配置中添加重写规则:
- Nginx站点配置可添加以下规则:
rewrite ^/[a-z]{2}/login/?$ /login last; - Apache站点根目录的
.htaccess文件可添加以下规则:RewriteRule ^[a-z]{2}/login/?$ /login [L]
规则会将所有带双字母语言前缀的登录请求静默转发到根域名下的登录路径,用户侧访问的带前缀路径保持不变。
内容的提问来源于stack exchange,提问作者Wractaaa
相关产品推荐
相关产品推荐

