You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress迁移虚拟机后.htaccess安全头(X-Frame等)失效排查

排查步骤

1. 确认Apache的mod_headers模块已启用

虚拟机上的Apache默认可能未开启mod_headers模块,而你的.htaccess配置被包裹在<IfModule mod_headers.c>中,模块未启用时这些规则会被忽略。

  • 执行命令检查模块状态:
    apache2ctl -M | grep headers
    
  • 如果输出中没有headers_module (shared),启用模块并重启Apache:
    a2enmod headers
    systemctl restart apache2
    

2. 修复.htaccess的语法错误

你的HSTS配置存在明显截断,会导致整个配置块失效:
原错误行:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDo>

修正为:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

同时补充.htaccess末尾缺失的# END WordPress标记,避免WordPress后续生成配置时出现异常。

3. 验证Apache允许解析.htaccess

检查虚拟主机配置文件(通常在/etc/apache2/sites-available/your-site.conf),确保对应网站根目录的Directory块中设置了AllowOverride All:

<Directory /var/www/your-wordpress-root>
    AllowOverride All
    # 其他配置...
</Directory>

修改后重启Apache生效。

4. 检查.htaccess的权限与归属

确保文件权限和所有者正确,让Apache能够读取:

chmod 644 /var/www/your-wordpress-root/.htaccess
chown www-data:www-data /var/www/your-wordpress-root/.htaccess

5. 用curl直接测试响应头(避开在线工具缓存)

使用curl命令直接获取响应头,结果更准确:

curl -I https://your-domain.com

查看输出中是否包含X-Frame-Options: SAMEORIGIN和Strict-Transport-Security。如果curl能看到但在线工具看不到,需清除CDN或浏览器缓存后重试。

6. 排查WordPress插件/主题的冲突

部分安全插件(如Wordfence)或自定义主题可能会通过PHP代码覆盖.htaccess设置的响应头:

  • 暂时禁用所有插件,重新测试响应头
  • 切换到WordPress默认主题(如Twenty Twenty-Four),再次测试

7. 确认HTTPS配置(针对HSTS)

HSTS头仅在HTTPS环境下生效,若网站未配置有效SSL证书或未强制HTTPS,HSTS不会被浏览器识别。同时确保测试时访问的是HTTPS地址,避免在线工具默认使用HTTP导致头未被检测到。


内容的提问来源于stack exchange,提问作者Mohsen Akhavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:55:01