主域名部署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
相关产品推荐
相关产品推荐

