如何在AWS EC2 Apache服务器及Cloudflare中将子域名重定向到路径
实现步骤
1. EC2 服务端配置
- 先调整Apache监听端口,避免和MERN站的前置服务端口冲突:打开Apache配置文件(一般路径为
/etc/httpd/conf/httpd.conf或者/etc/apache2/ports.conf),将默认Listen 80修改为Listen 127.0.0.1:8080,保存后重启Apache服务。 - 配置MERN站前置Nginx的反向代理规则,在MERN站对应的Nginx server配置块中新增如下规则,将
/blog路径的请求转发到本地Apache服务:
location ^~ /blog { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
保存后执行nginx -s reload重载配置。
- 修改WordPress核心配置,打开WordPress根目录下的
wp-config.php文件,新增如下两行配置,指定站点的新访问路径:
define( 'WP_HOME', 'https://myweb.com/blog' ); define( 'WP_SITEURL', 'https://myweb.com/blog' );
- 更新WordPress的伪静态规则,打开WordPress根目录下的
.htaccess文件,替换为适配子目录的规则:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule>
- 启用Apache所需模块,执行命令
a2enmod rewrite proxy proxy_http后重启Apache服务。
2. Cloudflare 配置调整
- 主域名
myweb.com的DNS记录无需修改,保持原有指向EC2的配置即可。 - 新建Cloudflare页面规则,匹配路径填写
blog.myweb.com/*,规则选择*「转发URL - 301永久重定向」*,目标路径填写https://myweb.com/blog/$1,保存后将规则优先级调至最高生效。 - 确认Cloudflare的SSL策略保持原有配置即可,无需额外调整,避免出现证书适配问题。
3. 验证与收尾
- 依次测试MERN站原有路径、
/blog路径下的WordPress前台、后台、静态资源、文章链接是否均可正常访问。 - 使用WordPress搜索替换类插件,批量替换站点内残留的
blog.myweb.com旧域名链接,避免出现跳转异常。 - 清理WordPress、Nginx、Cloudflare的缓存后,测试原有子域名的任意链接是否可以正常301跳转到新路径,确认SEO权重传递不受影响。
内容的提问来源于stack exchange,提问作者Spandan Joshi
相关产品推荐
相关产品推荐

