配置AWS CloudFront后WordPress显示EC2域名而非自定义域名求助
解决WordPress域名跳转EC2实例域名的问题
1. 修正WordPress核心URL设置
- 若能通过自定义域名访问
/wp-admin,登录后台后进入设置→常规,将**WordPress地址(URL)和站点地址(URL)**统一改为你的自定义域名(格式为https://你的域名.com),保存设置。 - 若无法访问后台,直接修改数据库:
- 登录EC2上的数据库管理工具(如phpMyAdmin或MySQL命令行)
- 找到WordPress对应的数据库,打开
wp_options表 - 定位
option_name为siteurl和home的两条记录,将option_value替换为你的自定义域名(带https协议)
2. 配置CloudFront转发关键HTTP头部
CloudFront默认不转发Host头部,导致WordPress识别到EC2内部域名,需调整分发设置:
- 进入AWS CloudFront控制台,选择你的分发,点击行为标签
- 选中对应行为并点击编辑
- 在缓存键和源请求区域,选择缓存策略和源请求策略(推荐)
- 源请求策略选择
Managed-CORS-S3Origin,或自定义策略并确保包含Host头部的转发规则 - 保存更改,等待CloudFront分发更新(通常10-15分钟生效)
3. 配置EC2上的Web服务器(Nginx/Apache)
确保Web服务器正确处理自定义域名请求并强制HTTPS:
Nginx示例
修改站点配置文件(通常路径/etc/nginx/sites-available/):
server { listen 80; server_name 你的域名.com www.你的域名.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name 你的域名.com www.你的域名.com; # 原有WordPress相关配置 location / { try_files $uri $uri/ /index.php?$args; } # 传递真实客户端协议和域名给WordPress fastcgi_param HTTP_X_FORWARDED_PROTO $scheme; fastcgi_param HTTP_X_FORWARDED_HOST $host; }
修改后重启Nginx:sudo systemctl restart nginx
Apache示例
修改WordPress根目录下的.htaccess文件:
RewriteEngine On # 强制HTTPS RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] # 让WordPress识别真实域名 SetEnvIf X-Forwarded-Proto https HTTPS=on
4. 批量替换内容中的硬编码链接
若之前发布的内容里存在EC2域名的硬编码链接,需批量替换:
- 使用WordPress插件(如Better Search Replace),搜索
http://ec2-35-176-85-228.eu-west-2.compute.amazonaws.com,替换为你的自定义域名 - 或通过MySQL命令行执行(执行前请备份数据库):
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://ec2-35-176-85-228.eu-west-2.compute.amazonaws.com', 'https://你的域名.com'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://ec2-35-176-85-228.eu-west-2.compute.amazonaws.com', 'https://你的域名.com');
内容的提问来源于stack exchange,提问作者tgboswell
相关产品推荐
相关产品推荐

