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

Apache反向代理子域名至主域名/blog路径及相关问题求助

解决Bitnami LAMP环境下Laravel博客的反向代理与重定向问题

问题1:修复blog.domain.fr重定向循环(消除重复URL)

重定向循环的核心原因是:直接访问blog.domain.fr时会被重定向到domain.fr/blog,而反向代理又把domain.fr/blog的请求转发回blog.domain.fr,形成闭环。

修改子域名<VirtualHost *:443>中的重定向规则,仅对外部直接访问的请求做重定向,排除反向代理发起的请求:

RewriteEngine On
# 仅当请求Host是blog.domain.fr且不是反向代理转发时,执行重定向
RewriteCond %{HTTP_HOST} ^blog\.domain\.fr$
RewriteCond %{HTTP:X-Forwarded-Host} !^domain\.fr$
RewriteRule ^ https://domain.fr/blog%{REQUEST_URI} [L,R=301]

问题2:解决domain.fr/blog/login等子路径无法访问的问题

1. 修正反向代理路径匹配规则

原ProxyPass规则因末尾斜杠缺失导致子路径映射异常,修改bitnami-ssl.conf中<VirtualHost default:443>的代理配置:

# 确保子路径正确映射,带末尾斜杠的规则优先匹配
ProxyPass /blog/ http://blog.domain.fr/
ProxyPassReverse /blog/ http://blog.domain.fr/
# 兼容不带末尾斜杠的请求
ProxyPass /blog http://blog.domain.fr/
ProxyPassReverse /blog http://blog.domain.fr/

2. 调整Laravel的路径与代理信任配置

Laravel默认基于子域名生成URL,反向代理后需要适配/blog前缀:

  • 编辑项目根目录的.env文件,修改应用URL:
    APP_URL=https://domain.fr/blog
    
  • 编辑app/Http/Middleware/TrustProxies.php,让Laravel信任反向代理并获取正确的请求头:
    protected $proxies = '*';
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
    

3. 传递正确的请求头给Laravel

在反向代理配置中添加头信息,确保Laravel能识别实际的请求前缀:

ProxyPass /blog/ http://blog.domain.fr/
ProxyPassReverse /blog/ http://blog.domain.fr/
# 传递反向代理相关头信息
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Host "domain.fr"
RequestHeader set X-Forwarded-Prefix "/blog"

最终操作

修改完所有配置后,重启Bitnami Apache服务生效:

sudo /opt/bitnami/ctlscript.sh restart apache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:08:18