配置HTTPS后Laravel站点除首页外均报404,排查Apache或Laravel配置问题
故障排查与解决方案
核心特征:首页可正常访问,其余路由返回404,说明PHP解释器、HTTPS基础配置、DocumentRoot指向均正常,故障根源为Apache未将非物理文件/目录的请求转发至Laravel入口文件public/index.php,按以下顺序操作:
1. 启用Apache重写模块
Ubuntu默认安装的Apache可能未激活mod_rewrite,执行以下命令启用并重载服务:
a2enmod rewrite systemctl restart apache2
2. 确认Laravel重写规则文件存在
检查/home/*mydomain*/public_html/public/.htaccess是否存在,若缺失则手动创建,写入以下Laravel官方默认规则:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
3. 修正Apache站点目录配置
你提供的站点配置中,<Directory "/home/*mydomain*/public_html/public">块内的AllowOverride语法错误,将Options限制与AllowOverride指令写在同一行会导致配置解析失效,调整该块为如下格式:
<Directory "/home/*mydomain*/public_html/public"> Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require all granted AddType application/x-httpd-php .php AddHandler fcgid-script .php AddHandler fcgid-script .php7.4 FCGIWrapper /home/*mydomain*/fcgi-bin/php7.4.fcgi .php FCGIWrapper /home/*mydomain*/fcgi-bin/php7.4.fcgi .php7.4 </Directory>
修改完成后重载Apache服务:
systemctl reload apache2
4. 修正目录权限
确认Apache可正常读取站点文件与.htaccess配置,执行以下命令:
chown -R #1000:#1000 /home/*mydomain*/public_html/ chmod -R 755 /home/*mydomain*/public_html/ chmod -R 775 /home/*mydomain*/public_html/storage/ /home/*mydomain*/public_html/bootstrap/cache/
5. 清除Laravel本地缓存
进入项目根目录清除旧配置,避免路由生成异常:
cd /home/*mydomain*/public_html/ php artisan config:clear php artisan route:clear php artisan cache:clear
同时检查根目录下.env文件的APP_URL配置,确保为正确的HTTPS地址,如APP_URL=https://mydomain.se。
内容的提问来源于stack exchange,提问作者Matrisen10
相关产品推荐
相关产品推荐

