WordPress站点htaccess配置下非www https域名移动端跳转安全报错问题
核心问题原因
.htaccess规则顺序错误,HTTPS/域名重定向规则放在了WordPress默认路由规则之后,而WordPress路由规则带[L]终止标记,匹配后不会执行后续的重定向逻辑,导致部分场景下跳转失效- 现有重定向规则逻辑不完整,仅判断了HTTP请求的跳转,没有覆盖
https://example.com这类HTTPS裸域名的跳转场景,用户访问HTTPS裸域名时不会触发跳转 - 站点SSL证书大概率仅绑定了
www.example.com,未包含裸域名example.com,用户直接访问HTTPS裸域名时,会先触发SSL证书校验不通过的安全错误,根本走不到后面的重定向逻辑。PC端正常是因为之前有301永久重定向的本地缓存,跳过了裸域名的请求环节,移动端无缓存就会直接报错。
修复步骤
- 先确认SSL证书同时添加了
example.com和www.example.com两个域名的绑定,避免裸域名HTTPS访问时触发证书错误 - 调整
.htaccess规则顺序,把重定向规则放到WordPress默认路由规则之前,补全裸域名跳转逻辑,修复后的完整配置如下:
RewriteEngine On RewriteBase / # 所有非www、非HTTPS的请求统一跳转到带www的HTTPS地址 RewriteCond %{HTTPS} !=on [OR] RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NE] # WordPress默认路由规则 RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] Header always set Content-Security-Policy "upgrade-insecure-requests;"
注:把配置中的
example.com替换为你自己的实际域名即可
- 配置修改完成后,清空浏览器和站点缓存,再测试移动端访问即可。
内容的提问来源于stack exchange,提问作者Notsoprosql
相关产品推荐
相关产品推荐

