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

主域名部署Laravel子域名部署WordPress的.htaccess配置403错误咨询

解决方案

1. 优先解决403权限错误

你遇到的报错核心原因是Apache无法读取子域名站点的.htaccess文件,和重写规则配置无关,需先完成以下配置:

  • 修正WordPress站点目录及文件权限,确保所有者与Apache运行用户(常见为www-data、apache)一致,权限设置参考:
# 替换路径为你的WordPress实际根目录
chown -R www-data:www-data /www/portal.maindomain.com
find /www/portal.maindomain.com -type d -exec chmod 755 {} \;
find /www/portal.maindomain.com -type f -exec chmod 644 {} \;
  • 检查Apache子域名虚拟主机配置,确保Directory段开启了.htaccess读取权限,必须包含AllowOverride All配置:
<VirtualHost *:443>
    ServerName portal.maindomain.com
    DocumentRoot /www/portal.maindomain.com
    <Directory /www/portal.maindomain.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    # 其余SSL、日志配置省略
</VirtualHost>

修改后重启Apache服务生效。

2. 最终.htaccess配置

  • 主域名Laravel站点.htaccess无需调整,你当前使用的配置完全符合要求,不需要修改。
  • 子域名WordPress站点使用标准重写规则即可,你已经在wp_options中配置站点地址为根域名https://portal.maindomain.com,不需要添加/portal前缀,配置如下:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

特殊场景补充配置(仅适用于子域名站点放在主域名根目录的portal子文件夹内的情况)

如果你的子域名没有独立的站点根目录,而是指向主域名Laravel根目录下的portal子文件夹,需要在主域名Laravel的.htaccess最开头(RewriteEngine On之后)添加如下排除规则,避免Laravel拦截子域名请求:

# 排除portal子域名的重写逻辑
RewriteCond %{HTTP_HOST} ^portal\.maindomain\.com$ [NC]
RewriteRule ^ - [L]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:45:03